summaryrefslogtreecommitdiffhomepage
path: root/android/app/src
diff options
context:
space:
mode:
authorDavid Göransson <david.goransson@mullvad.net>2024-09-26 10:34:23 +0200
committerDavid Göransson <david.goransson@mullvad.net>2024-10-01 13:46:57 +0200
commite861350fb8aee5561176a66fd268f36d820e88ef (patch)
tree61fca1a841fdd62aea217f691bdfc0758797b412 /android/app/src
parent9b51a92a954b8d643ed44c962d7c374746e0ec7f (diff)
downloadmullvadvpn-e861350fb8aee5561176a66fd268f36d820e88ef.tar.xz
mullvadvpn-e861350fb8aee5561176a66fd268f36d820e88ef.zip
Use material icons
Diffstat (limited to 'android/app/src')
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/AnimatedIconButton.kt16
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/ExternalActionButton.kt12
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/InfoIconButton.kt6
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/button/SwitchLocationButton.kt7
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/CustomPortCell.kt5
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/DnsCell.kt6
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/DropdownMenuCell.kt6
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/ExpandableComposeCell.kt5
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/IconCell.kt13
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/InformationComposeCell.kt6
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/NavigationComposeCell.kt19
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/ObfuscationModeCell.kt10
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/RelayLocationCell.kt13
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SelectableCell.kt6
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/cell/SwitchComposeCell.kt9
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/CopyableObfuscationView.kt14
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/ExpandChevron.kt (renamed from android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/Chevron.kt)45
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/FilterChip.kt5
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/MullvadModalBottomSheet.kt2
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/NavigateButton.kt18
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/PlayPayment.kt5
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/Scaffolding.kt8
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/TopBar.kt12
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/notificationbanner/NotificationBanner.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/notificationbanner/NotificationData.kt19
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/DaitaConfirmationDialog.kt5
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/NegativeConfirmationDialog.kt5
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/dialog/info/InfoDialog.kt5
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/preview/SplitTunnelingUiStatePreviewParameterProvider.kt6
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AccountScreen.kt9
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ApiAccessListScreen.kt12
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ApiAccessMethodDetailsScreen.kt9
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AutoConnectAndLockdownModeScreen.kt17
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ConnectScreen.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/CustomListsScreen.kt5
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/DeviceListScreen.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/EditApiAccessMethodScreen.kt11
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/EditCustomListScreen.kt9
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/FilterScreen.kt5
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/LoginScreen.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/PrivacyDisclaimerScreen.kt6
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SelectLocationScreen.kt31
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ServerIpOverridesScreen.kt13
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/SettingsScreen.kt4
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/ViewLogsScreen.kt7
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/WelcomeScreen.kt5
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/ApiAccessMethodTextField.kt6
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/textfield/SearchTextField.kt8
48 files changed, 245 insertions, 216 deletions
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/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/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/Chevron.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/ExpandChevron.kt
index 29ca1537f8..7f211ef0e4 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/Chevron.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/ExpandChevron.kt
@@ -4,6 +4,8 @@ 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
@@ -12,30 +14,19 @@ 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)
+ ExpandChevron(color = MaterialTheme.colorScheme.onPrimary, isExpanded = false)
+ ExpandChevron(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) {
+fun ExpandChevron(modifier: Modifier = Modifier, color: Color, isExpanded: Boolean) {
val degree = remember(isExpanded) { if (isExpanded) UP_ROTATION else DOWN_ROTATION }
val animatedRotation =
@@ -46,7 +37,7 @@ fun Chevron(modifier: Modifier = Modifier, color: Color, isExpanded: Boolean) {
)
Icon(
- painterResource(id = R.drawable.icon_chevron),
+ imageVector = Icons.Default.KeyboardArrowDown,
contentDescription = null,
tint = color,
modifier = modifier.rotate(animatedRotation.value),
@@ -54,26 +45,6 @@ fun Chevron(modifier: Modifier = Modifier, color: Color, isExpanded: Boolean) {
}
@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,
@@ -81,11 +52,9 @@ fun ExpandChevronIconButton(
isExpanded: Boolean,
) {
IconButton(modifier = modifier, onClick = { onExpand(!isExpanded) }) {
- Chevron(isExpanded = isExpanded, color = color)
+ ExpandChevron(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/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,
)