28 import androidx.compose.material3.* |
28 import androidx.compose.material3.* |
29 import androidx.compose.runtime.* |
29 import androidx.compose.runtime.* |
30 import androidx.compose.ui.Alignment |
30 import androidx.compose.ui.Alignment |
31 import androidx.compose.ui.Modifier |
31 import androidx.compose.ui.Modifier |
32 import androidx.compose.ui.unit.dp |
32 import androidx.compose.ui.unit.dp |
|
33 import androidx.lifecycle.compose.collectAsStateWithLifecycle |
33 import androidx.lifecycle.viewmodel.compose.viewModel |
34 import androidx.lifecycle.viewmodel.compose.viewModel |
34 import com.geekorum.aboutoss.ui.common.OpenSourceLicensesViewModel |
35 import com.geekorum.aboutoss.ui.common.OpenSourceLicensesViewModel |
35 |
36 |
36 @Composable |
37 @Composable |
37 fun CustomViewer( |
38 fun CustomViewer( |
51 @Composable |
52 @Composable |
52 private fun DependenciesGrid( |
53 private fun DependenciesGrid( |
53 viewModel: OpenSourceLicensesViewModel, |
54 viewModel: OpenSourceLicensesViewModel, |
54 modifier: Modifier = Modifier |
55 modifier: Modifier = Modifier |
55 ) { |
56 ) { |
56 val dependencies by viewModel.dependenciesList.collectAsState(initial = emptyList()) |
57 val dependencies by viewModel.dependenciesList.collectAsStateWithLifecycle(emptyList()) |
57 var selected by remember { mutableStateOf(-1) } |
58 var selected by remember { mutableStateOf(-1) } |
58 LazyVerticalGrid( |
59 LazyVerticalGrid( |
59 GridCells.Adaptive(150.dp), |
60 GridCells.Adaptive(150.dp), |
60 horizontalArrangement = Arrangement.spacedBy(16.dp), |
61 horizontalArrangement = Arrangement.spacedBy(16.dp), |
61 verticalArrangement = Arrangement.spacedBy(16.dp), |
62 verticalArrangement = Arrangement.spacedBy(16.dp), |
62 modifier = modifier |
63 modifier = modifier |
63 ) { |
64 ) { |
64 itemsIndexed(dependencies) { idx, dependency -> |
65 itemsIndexed(dependencies) { idx, dependency -> |
65 if (idx == selected) { |
66 if (idx == selected) { |
66 val license by viewModel.getLicenseDependency(dependency) |
67 val license by viewModel.getLicenseDependency(dependency) |
67 .collectAsState(initial = "") |
68 .collectAsStateWithLifecycle("") |
68 LicenseCard(license, onClick = { |
69 LicenseCard(license, onClick = { |
69 selected = -1 |
70 selected = -1 |
70 }) |
71 }) |
71 } else { |
72 } else { |
72 DependencyCard(dependency, onClick = { |
73 DependencyCard(dependency, onClick = { |