UI: polish Hugging Face download dialog UI

This commit is contained in:
Han Yin 2025-08-31 10:19:41 -07:00
parent 58adb6c6a5
commit 1c73f6215f
1 changed files with 63 additions and 60 deletions

View File

@ -48,6 +48,7 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
@ -519,7 +520,7 @@ fun HuggingFaceModelListItem(
) { ) {
Column(modifier = Modifier.fillMaxWidth().padding(8.dp)) { Column(modifier = Modifier.fillMaxWidth().padding(8.dp)) {
Text( Text(
modifier = Modifier.basicMarquee(), modifier = Modifier.fillMaxWidth().basicMarquee(),
text = model.modelId.substringAfterLast("/"), text = model.modelId.substringAfterLast("/"),
style = MaterialTheme.typography.bodyMedium, style = MaterialTheme.typography.bodyMedium,
fontWeight = if (isSelected) FontWeight.Bold else FontWeight.Medium, fontWeight = if (isSelected) FontWeight.Bold else FontWeight.Medium,
@ -527,9 +528,15 @@ fun HuggingFaceModelListItem(
Spacer(modifier = Modifier.size(8.dp)) Spacer(modifier = Modifier.size(8.dp))
Row(verticalAlignment = Alignment.Bottom) { Row(
Column { modifier = Modifier.fillMaxWidth(),
Row(verticalAlignment = Alignment.CenterVertically) { verticalAlignment = Alignment.CenterVertically
) {
Column(modifier = Modifier.weight(0.9f)) {
Row(
modifier = Modifier.padding(bottom = 8.dp),
verticalAlignment = Alignment.CenterVertically
) {
Icon( Icon(
imageVector = Icons.Default.Attribution, imageVector = Icons.Default.Attribution,
contentDescription = "Author", contentDescription = "Author",
@ -537,77 +544,73 @@ fun HuggingFaceModelListItem(
tint = MaterialTheme.colorScheme.onSurfaceVariant tint = MaterialTheme.colorScheme.onSurfaceVariant
) )
Spacer(modifier = Modifier.size(4.dp))
Text( Text(
modifier = Modifier.padding(start = 4.dp),
text = model.author, text = model.author,
style = MaterialTheme.typography.bodyMedium, style = MaterialTheme.typography.bodyMedium,
color = MaterialTheme.colorScheme.onSurfaceVariant color = MaterialTheme.colorScheme.onSurfaceVariant
) )
} }
Spacer(modifier = Modifier.size(8.dp)) Row(
modifier = Modifier.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically
) {
Row(modifier = Modifier.weight(5f).padding(end = 8.dp)) {
Icon(
imageVector = Icons.Default.Today,
contentDescription = "Author",
modifier = Modifier.size(16.dp),
tint = MaterialTheme.colorScheme.onSurfaceVariant
)
Row(verticalAlignment = Alignment.CenterVertically) { Text(
Icon( modifier = Modifier.padding(start = 4.dp),
imageVector = Icons.Default.Today, text = dateFormatter.format(model.lastModified),
contentDescription = "Author", style = MaterialTheme.typography.bodyMedium,
modifier = Modifier.size(16.dp), color = MaterialTheme.colorScheme.onSurfaceVariant
tint = MaterialTheme.colorScheme.onSurfaceVariant )
) }
Spacer(modifier = Modifier.size(4.dp)) Row(modifier = Modifier.weight(3f).padding(end = 8.dp)) {
Icon(
imageVector = Icons.Default.Favorite,
contentDescription = "Favorite count",
modifier = Modifier.size(16.dp),
tint = MaterialTheme.colorScheme.onSurfaceVariant
)
Text( Text(
text = dateFormatter.format(model.lastModified), modifier = Modifier.padding(start = 4.dp),
style = MaterialTheme.typography.bodyMedium, text = formatContextLength(model.likes),
color = MaterialTheme.colorScheme.onSurfaceVariant style = MaterialTheme.typography.bodyMedium,
) color = MaterialTheme.colorScheme.onSurfaceVariant
)
}
Spacer(modifier = Modifier.size(8.dp)) Row(modifier = Modifier.weight(4f).padding(end = 4.dp)) {
Icon(
imageVector = Icons.Default.Download,
contentDescription = "Download count",
modifier = Modifier.size(16.dp),
tint = MaterialTheme.colorScheme.onSurfaceVariant
)
Icon( Text(
imageVector = Icons.Default.Favorite, modifier = Modifier.padding(start = 4.dp),
contentDescription = "Favorite count", text = formatContextLength(model.downloads),
modifier = Modifier.size(16.dp), style = MaterialTheme.typography.bodyMedium,
tint = MaterialTheme.colorScheme.onSurfaceVariant color = MaterialTheme.colorScheme.onSurfaceVariant
) )
}
Spacer(modifier = Modifier.size(4.dp))
Text(
text = formatContextLength(model.likes),
style = MaterialTheme.typography.bodyMedium,
color = MaterialTheme.colorScheme.onSurfaceVariant
)
Spacer(modifier = Modifier.size(8.dp))
Icon(
imageVector = Icons.Default.Download,
contentDescription = "Download count",
modifier = Modifier.size(16.dp),
tint = MaterialTheme.colorScheme.onSurfaceVariant
)
Spacer(modifier = Modifier.size(4.dp))
Text(
text = formatContextLength(model.downloads),
style = MaterialTheme.typography.bodyMedium,
color = MaterialTheme.colorScheme.onSurfaceVariant
)
} }
} }
Spacer(Modifier.weight(1f)) Checkbox(
modifier = Modifier.size(32.dp).alpha(if (isSelected) 1f else 0f),
if (isSelected) { checked = isSelected,
Checkbox( onCheckedChange = null, // handled by parent selectable
checked = isSelected, )
onCheckedChange = null, // handled by parent selectable
)
}
} }
} }
} }