commit 88d5873dc7c8beee2f6782101ad82570f2b93ee1
parent ff316bc20404cfc0be3dacebca5c20bf02047f0a
Author: Gabriel Luong <gabriel.luong@gmail.com>
Date: Fri, 21 Nov 2025 08:21:43 +0000
Bug 1997968 - Part 4: Migrate FileListItem to use M3 Acorn color tokens r=android-reviewers,007
Download List: https://www.figma.com/design/d4VPwxnMK4nmaFvdlvfoIz/Mobile-Downloads?node-id=11598-17641&m=dev
Progression Indicator: https://www.figma.com/design/MjufE1X5fvkxZ0YneX4kRd/Android-Library--2025-?node-id=68605-12660&m=dev
Differential Revision: https://phabricator.services.mozilla.com/D271134
Diffstat:
1 file changed, 43 insertions(+), 29 deletions(-)
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/downloads/listscreen/ui/FileListItem.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/downloads/listscreen/ui/FileListItem.kt
@@ -6,7 +6,6 @@ package org.mozilla.fenix.downloads.listscreen.ui
import androidx.annotation.FloatRange
import androidx.compose.foundation.background
-import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
@@ -16,6 +15,7 @@ import androidx.compose.foundation.progressSemantics
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.LinearProgressIndicator
+import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
@@ -43,6 +43,7 @@ import org.mozilla.fenix.downloads.listscreen.DownloadsListTestTag
import org.mozilla.fenix.downloads.listscreen.store.FileItem
import org.mozilla.fenix.downloads.listscreen.store.TimeCategory
import org.mozilla.fenix.theme.FirefoxTheme
+import org.mozilla.fenix.theme.Theme
import mozilla.components.feature.media.R as mediaR
import mozilla.components.ui.icons.R as iconsR
@@ -81,14 +82,14 @@ internal fun FileListItem(
isSelected = isSelected,
modifier = modifier.selectableListItemProgressSemantics(status = fileItem.status),
descriptionTextColor = if (fileItem.status == FileItem.Status.Failed) {
- FirefoxTheme.colors.iconCritical
+ MaterialTheme.colorScheme.error
} else {
- FirefoxTheme.colors.textSecondary
+ MaterialTheme.colorScheme.onSurfaceVariant
},
iconTint = if (fileItem.status == FileItem.Status.Failed) {
- FirefoxTheme.colors.iconCritical
+ MaterialTheme.colorScheme.error
} else {
- FirefoxTheme.colors.iconPrimary
+ MaterialTheme.colorScheme.onSurfaceVariant
},
labelOverflow = TextOverflow.MiddleEllipsis,
afterListItemAction = {
@@ -145,7 +146,7 @@ private fun AfterListItemAction(
Icon(
painter = painterResource(mediaR.drawable.mozac_feature_media_action_pause),
contentDescription = stringResource(R.string.download_pause_action),
- tint = FirefoxTheme.colors.iconPrimary,
+ tint = MaterialTheme.colorScheme.onSurface,
)
}
}
@@ -156,7 +157,7 @@ private fun AfterListItemAction(
Icon(
painter = painterResource(mediaR.drawable.mozac_feature_media_action_play),
contentDescription = stringResource(R.string.download_resume_action),
- tint = FirefoxTheme.colors.iconPrimary,
+ tint = MaterialTheme.colorScheme.onSurface,
)
}
}
@@ -168,7 +169,7 @@ private fun AfterListItemAction(
Icon(
painter = painterResource(iconsR.drawable.mozac_ic_arrow_counter_clockwise_24),
contentDescription = stringResource(R.string.download_retry_action),
- tint = FirefoxTheme.colors.iconPrimary,
+ tint = MaterialTheme.colorScheme.onSurface,
)
}
}
@@ -185,7 +186,7 @@ private fun AfterListItemAction(
Icon(
painter = painterResource(id = iconsR.drawable.mozac_ic_ellipsis_vertical_24),
contentDescription = stringResource(id = R.string.content_description_menu),
- tint = FirefoxTheme.colors.iconPrimary,
+ tint = MaterialTheme.colorScheme.onSurface,
)
DropdownMenu(
@@ -211,15 +212,11 @@ private fun DownloadProgressIndicator(
if (progress == null) {
LinearProgressIndicator(
modifier = Modifier.clearAndSetSemantics {},
- color = FirefoxTheme.colors.borderAccent,
- trackColor = FirefoxTheme.colors.borderPrimary,
)
} else {
LinearProgressIndicator(
modifier = Modifier.clearAndSetSemantics {},
progress = { progress },
- color = FirefoxTheme.colors.borderAccent,
- trackColor = FirefoxTheme.colors.borderPrimary,
drawStopIndicator = {},
)
}
@@ -535,21 +532,38 @@ private fun FileListItemPreview(
@PreviewParameter(FileListItemParameterProvider::class) fileListItemPreviewState: FileListItemPreviewState,
) {
FirefoxTheme {
- Box(
- modifier = Modifier.background(FirefoxTheme.colors.layer1),
- ) {
- FileListItem(
- isSelected = fileListItemPreviewState.isSelected,
- fileItem = fileListItemPreviewState.fileItem,
- areAfterListItemIconsVisible = fileListItemPreviewState.areAfterListItemIconsVisible,
- onPauseClick = {},
- onResumeClick = {},
- onRetryClick = {},
- onShareFileClick = {},
- onDeleteClick = {},
- onShareUrlClick = {},
- )
- Spacer(modifier = Modifier.height(20.dp))
- }
+ FileListItem(
+ isSelected = fileListItemPreviewState.isSelected,
+ fileItem = fileListItemPreviewState.fileItem,
+ areAfterListItemIconsVisible = fileListItemPreviewState.areAfterListItemIconsVisible,
+ modifier = Modifier.background(MaterialTheme.colorScheme.surface),
+ onPauseClick = {},
+ onResumeClick = {},
+ onRetryClick = {},
+ onShareFileClick = {},
+ onDeleteClick = {},
+ onShareUrlClick = {},
+ )
+ }
+}
+
+@PreviewLightDark
+@Composable
+private fun FileListItemPrivatePreview(
+ @PreviewParameter(FileListItemParameterProvider::class) fileListItemPreviewState: FileListItemPreviewState,
+) {
+ FirefoxTheme(theme = Theme.Private) {
+ FileListItem(
+ isSelected = fileListItemPreviewState.isSelected,
+ fileItem = fileListItemPreviewState.fileItem,
+ areAfterListItemIconsVisible = fileListItemPreviewState.areAfterListItemIconsVisible,
+ modifier = Modifier.background(MaterialTheme.colorScheme.surface),
+ onPauseClick = {},
+ onResumeClick = {},
+ onRetryClick = {},
+ onShareFileClick = {},
+ onDeleteClick = {},
+ onShareUrlClick = {},
+ )
}
}