ui: add "clear results" action to Benchmark screen

This commit is contained in:
Han Yin 2025-05-02 10:13:13 -07:00
parent 49df3aea9a
commit bbf0420bac
5 changed files with 26 additions and 8 deletions

View File

@ -271,6 +271,11 @@ fun AppContent(
), ),
bottomBarConfig = BottomBarConfig.Benchmark( bottomBarConfig = BottomBarConfig.Benchmark(
engineIdle = !engineState.isUninterruptible, engineIdle = !engineState.isUninterruptible,
onShare = {
benchmarkResults.lastOrNull()?.let {
handleScaffoldEvent(ScaffoldEvent.ShareText(it.text))
}
},
onRerun = { onRerun = {
if (engineState.isUninterruptible) { if (engineState.isUninterruptible) {
handleScaffoldEvent(ScaffoldEvent.ShowSnackbar( handleScaffoldEvent(ScaffoldEvent.ShowSnackbar(
@ -281,11 +286,7 @@ fun AppContent(
benchmarkViewModel.runBenchmark() benchmarkViewModel.runBenchmark()
} }
}, },
onShare = { onClear = benchmarkViewModel::clearResults,
benchmarkResults.lastOrNull()?.let {
handleScaffoldEvent(ScaffoldEvent.ShareText(it.text))
}
},
showModelCard = showModelCard, showModelCard = showModelCard,
onToggleModelCard = benchmarkViewModel::toggleModelCard, onToggleModelCard = benchmarkViewModel::toggleModelCard,
) )

View File

@ -105,8 +105,9 @@ fun AppScaffold(
is BottomBarConfig.Benchmark -> { is BottomBarConfig.Benchmark -> {
BenchmarkBottomBar( BenchmarkBottomBar(
engineIdle = config.engineIdle, engineIdle = config.engineIdle,
onRerun = config.onRerun,
onShare = config.onShare, onShare = config.onShare,
onRerun = config.onRerun,
onClear = config.onClear,
showModelCard = config.showModelCard, showModelCard = config.showModelCard,
onToggleModelCard = config.onToggleModelCard, onToggleModelCard = config.onToggleModelCard,
) )

View File

@ -7,6 +7,7 @@ import androidx.compose.animation.scaleIn
import androidx.compose.animation.scaleOut import androidx.compose.animation.scaleOut
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Badge import androidx.compose.material.icons.filled.Badge
import androidx.compose.material.icons.filled.ClearAll
import androidx.compose.material.icons.filled.Replay import androidx.compose.material.icons.filled.Replay
import androidx.compose.material.icons.filled.Share import androidx.compose.material.icons.filled.Share
import androidx.compose.material.icons.outlined.Badge import androidx.compose.material.icons.outlined.Badge
@ -20,8 +21,9 @@ import androidx.compose.runtime.Composable
@Composable @Composable
fun BenchmarkBottomBar( fun BenchmarkBottomBar(
engineIdle: Boolean, engineIdle: Boolean,
onRerun: () -> Unit,
onShare: () -> Unit, onShare: () -> Unit,
onRerun: () -> Unit,
onClear: () -> Unit,
showModelCard: Boolean, showModelCard: Boolean,
onToggleModelCard: (Boolean) -> Unit, onToggleModelCard: (Boolean) -> Unit,
) { ) {
@ -37,6 +39,13 @@ fun BenchmarkBottomBar(
) )
} }
IconButton(onClick = onClear) {
Icon(
imageVector = Icons.Default.ClearAll,
contentDescription = "Clear benchmark results"
)
}
IconButton(onClick = { onToggleModelCard(!showModelCard) } ) { IconButton(onClick = { onToggleModelCard(!showModelCard) } ) {
Icon( Icon(
imageVector = if (showModelCard) Icons.Default.Badge else Icons.Outlined.Badge, imageVector = if (showModelCard) Icons.Default.Badge else Icons.Outlined.Badge,

View File

@ -87,8 +87,9 @@ sealed class BottomBarConfig {
data class Benchmark( data class Benchmark(
val engineIdle: Boolean, val engineIdle: Boolean,
val onRerun: () -> Unit,
val onShare: () -> Unit, val onShare: () -> Unit,
val onRerun: () -> Unit,
val onClear: () -> Unit,
val showModelCard: Boolean, val showModelCard: Boolean,
val onToggleModelCard: (Boolean) -> Unit, val onToggleModelCard: (Boolean) -> Unit,
) : BottomBarConfig() ) : BottomBarConfig()

View File

@ -67,6 +67,12 @@ class BenchmarkViewModel @Inject constructor(
} }
return true return true
} }
override suspend fun performCleanup() = clearResults()
fun clearResults() {
_benchmarkResults.value = emptyList()
}
} }
data class BenchmarkResult( data class BenchmarkResult(