feat: add BLMTableViewModel with factory and extended Material icons dependency

This commit is contained in:
2026-06-12 12:15:44 +01:00
parent b06de4e2fe
commit b3c475ad18
3 changed files with 34 additions and 0 deletions
+1
View File
@@ -63,6 +63,7 @@ dependencies {
implementation(libs.androidx.compose.ui.tooling.preview)
implementation(libs.androidx.compose.material3)
implementation(libs.androidx.compose.material.icons.core)
implementation(libs.androidx.compose.material.icons.extended)
// Tooling
debugImplementation(libs.androidx.compose.ui.tooling)
// Instrumented tests
@@ -0,0 +1,32 @@
package com.example.esp32aldldashboard.ui.blm
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import com.example.esp32aldldashboard.repository.BLMCellData
import com.example.esp32aldldashboard.repository.BLMTableRepository
import kotlinx.coroutines.flow.StateFlow
class BLMTableViewModel(private val repository: BLMTableRepository) : ViewModel() {
val tableData: StateFlow<Array<Array<BLMCellData>>> = repository.tableData
val rpmBands: List<Int> = repository.rpmBands
val mapBands: List<Int> = repository.mapBands
fun clearTable() {
repository.clearTable()
}
fun getBLMColor(blm: Int): Long {
return repository.getBLMColor(blm)
}
}
class BLMTableViewModelFactory(private val repository: BLMTableRepository) : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
if (modelClass.isAssignableFrom(BLMTableViewModel::class.java)) {
@Suppress("UNCHECKED_CAST")
return BLMTableViewModel(repository) as T
}
throw IllegalArgumentException("Unknown ViewModel class")
}
}
+1
View File
@@ -23,6 +23,7 @@ androidx-activity-compose = { module = "androidx.activity:activity-compose", ver
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "androidxComposeBom" }
androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3"}
androidx-compose-material-icons-core = { group = "androidx.compose.material", name = "material-icons-core" }
androidx-compose-material-icons-extended = { group = "androidx.compose.material", name = "material-icons-extended" }
androidx-compose-ui = { group = "androidx.compose.ui", name = "ui"}
androidx-compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview"}
androidx-compose-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4"}