From 93f173596526fbd01bca71250cb6ab1b153887fc Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Fri, 12 Jul 2024 00:51:30 -0500 Subject: [PATCH] Fix some more null icons --- .../tasks/compose/FilterSelectionActivity.kt | 3 +- .../tasks/compose/pickers/CalendarPicker.kt | 8 ++--- .../java/org/tasks/tags/TagPickerActivity.kt | 20 +++++++----- .../pickers/SearchableFilterPickerPreviews.kt | 3 +- .../tasks/compose/components/IconByLabel.kt | 3 +- .../tasks/compose/pickers/CheckableIconRow.kt | 31 ++++++++----------- .../compose/pickers/SearchableFilterPicker.kt | 2 +- .../kotlin/org/tasks/themes/TasksIcons.kt | 2 ++ 8 files changed, 35 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/org/tasks/compose/FilterSelectionActivity.kt b/app/src/main/java/org/tasks/compose/FilterSelectionActivity.kt index f284349c6..39e4cacd0 100644 --- a/app/src/main/java/org/tasks/compose/FilterSelectionActivity.kt +++ b/app/src/main/java/org/tasks/compose/FilterSelectionActivity.kt @@ -28,7 +28,6 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.viewmodel.compose.viewModel import dagger.hilt.android.AndroidEntryPoint import org.tasks.LocalBroadcastManager -import org.tasks.compose.components.imageVectorByName import org.tasks.compose.pickers.SearchableFilterPicker import org.tasks.dialogs.FilterPickerViewModel import org.tasks.filters.Filter @@ -75,7 +74,7 @@ class FilterSelectionActivity : AppCompatActivity() { filters = if (searching) state.searchResults else state.filters, query = state.query, onQueryChange = { viewModel.onQueryChange(it) }, - getIcon = { imageVectorByName(viewModel.getIcon(it)) }, + getIcon = { viewModel.getIcon(it) }, getColor = { viewModel.getColor(it) }, selected = selected, onClick = { filter -> diff --git a/app/src/main/java/org/tasks/compose/pickers/CalendarPicker.kt b/app/src/main/java/org/tasks/compose/pickers/CalendarPicker.kt index 4ec8fea88..d87fb430c 100644 --- a/app/src/main/java/org/tasks/compose/pickers/CalendarPicker.kt +++ b/app/src/main/java/org/tasks/compose/pickers/CalendarPicker.kt @@ -6,9 +6,6 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Block -import androidx.compose.material.icons.outlined.Event import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect @@ -24,6 +21,7 @@ import com.google.accompanist.permissions.rememberMultiplePermissionsState import org.tasks.R import org.tasks.calendars.AndroidCalendar import org.tasks.calendars.CalendarPickerViewModel +import org.tasks.themes.TasksIcons import org.tasks.themes.TasksTheme @OptIn(ExperimentalPermissionsApi::class) @@ -68,7 +66,7 @@ fun CalendarPickerList( .padding(vertical = 12.dp) ) { CheckableIconRow( - icon = Icons.Outlined.Block, + icon = TasksIcons.BLOCK, tint = MaterialTheme.colorScheme.onSurface, text = stringResource(id = R.string.dont_add_to_calendar), selected = selectedCalendar == null, @@ -76,7 +74,7 @@ fun CalendarPickerList( ) calendars.forEach { CheckableIconRow( - icon = Icons.Outlined.Event, + icon = TasksIcons.EVENT, tint = Color(it.color), text = it.name, selected = selectedCalendar == it, diff --git a/app/src/main/java/org/tasks/tags/TagPickerActivity.kt b/app/src/main/java/org/tasks/tags/TagPickerActivity.kt index 40ab90003..7742d2137 100644 --- a/app/src/main/java/org/tasks/tags/TagPickerActivity.kt +++ b/app/src/main/java/org/tasks/tags/TagPickerActivity.kt @@ -40,7 +40,7 @@ import kotlinx.coroutines.launch import org.tasks.R import org.tasks.Strings import org.tasks.billing.Inventory -import org.tasks.compose.components.imageVectorByName +import org.tasks.compose.components.TasksIcon import org.tasks.data.entity.TagData import org.tasks.extensions.addBackPressedCallback import org.tasks.filters.TagFilter @@ -142,7 +142,12 @@ internal fun TagPicker( Box ( modifier = Modifier.weight(1f) ) { - PickerBox(viewModel, viewModel.tagsList.observeAsState(initial = emptyList()), getTagIcon, getTagColor) + PickerBox( + viewModel = viewModel, + tags = viewModel.tagsList.observeAsState(initial = emptyList()), + getTagIcon = getTagIcon, + getTagColor = getTagColor + ) } } } @@ -207,7 +212,7 @@ internal fun PickerBox ( item(key = -1) { val text = LocalContext.current.getString(R.string.new_tag) + " \"${viewModel.tagToCreate.value}\"" TagRow( - icon = ImageVector.vectorResource(R.drawable.ic_outline_add_24px), + icon = TasksIcons.ADD, iconColor = Color(LocalContext.current.getColor(R.color.icon_tint_with_alpha)), text = text, onClick = { newItem(viewModel.searchText.value) } @@ -220,7 +225,7 @@ internal fun PickerBox ( val checked = remember { mutableStateOf ( viewModel.getState(it) ) } val clickChecked: () -> Unit = { onClick(it); checked.value = viewModel.getState(it) } TagRow( - icon = imageVectorByName(getTagIcon(it))!!, + icon = getTagIcon(it), iconColor = getTagColor(it), text = it.name!!, onClick = clickChecked @@ -237,7 +242,7 @@ internal fun PickerBox ( @Composable internal fun TagRow ( - icon: ImageVector, + icon: String, iconColor: Color, text: String, onClick: () -> Unit, @@ -248,10 +253,9 @@ internal fun TagRow ( .clickable { onClick() }, verticalAlignment = Alignment.CenterVertically, ) { - Icon( - imageVector = icon, - contentDescription = "", + TasksIcon( modifier = Modifier.padding(6.dp), + label = icon, tint = iconColor ) Text( diff --git a/kmp/src/androidMain/kotlin/org/tasks/previews/pickers/SearchableFilterPickerPreviews.kt b/kmp/src/androidMain/kotlin/org/tasks/previews/pickers/SearchableFilterPickerPreviews.kt index 4475e3c08..8b08178da 100644 --- a/kmp/src/androidMain/kotlin/org/tasks/previews/pickers/SearchableFilterPickerPreviews.kt +++ b/kmp/src/androidMain/kotlin/org/tasks/previews/pickers/SearchableFilterPickerPreviews.kt @@ -3,7 +3,6 @@ package org.tasks.previews.pickers import android.content.res.Configuration import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.Preview -import org.tasks.compose.components.imageVectorByName import org.tasks.compose.pickers.SearchableFilterPicker import org.tasks.filters.FilterImpl import org.tasks.filters.NavigationDrawerSubheader @@ -33,7 +32,7 @@ fun FilterPickerPreview() { onQueryChange = {}, selected = null, onClick = {}, - getIcon = { imageVectorByName(label = it.icon!!)!! }, + getIcon = { it.icon }, getColor = { 0 }, ) } diff --git a/kmp/src/commonMain/kotlin/org/tasks/compose/components/IconByLabel.kt b/kmp/src/commonMain/kotlin/org/tasks/compose/components/IconByLabel.kt index 5a58e355f..8435ab254 100644 --- a/kmp/src/commonMain/kotlin/org/tasks/compose/components/IconByLabel.kt +++ b/kmp/src/commonMain/kotlin/org/tasks/compose/components/IconByLabel.kt @@ -15,10 +15,11 @@ import org.tasks.compose.pickers.label @Composable fun TasksIcon( + modifier: Modifier = Modifier, label: String?, tint: Color = MaterialTheme.colorScheme.onSurface, ) { - Box(modifier = Modifier.size(24.dp)) { + Box(modifier = modifier.size(24.dp)) { Icon( imageVector = remember (label) { imageVectorByName(label) diff --git a/kmp/src/commonMain/kotlin/org/tasks/compose/pickers/CheckableIconRow.kt b/kmp/src/commonMain/kotlin/org/tasks/compose/pickers/CheckableIconRow.kt index 737ece49a..e74d71408 100644 --- a/kmp/src/commonMain/kotlin/org/tasks/compose/pickers/CheckableIconRow.kt +++ b/kmp/src/commonMain/kotlin/org/tasks/compose/pickers/CheckableIconRow.kt @@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Check @@ -17,12 +16,12 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.unit.dp +import org.tasks.compose.components.TasksIcon @Composable fun CheckableIconRow( - icon: ImageVector, + icon: String?, tint: Color, text: String, selected: Boolean, @@ -45,7 +44,7 @@ fun CheckableIconRow( @Composable fun CheckableIconRow( - icon: ImageVector?, + icon: String?, tint: Color, selected: Boolean, onClick: () -> Unit, @@ -57,20 +56,16 @@ fun CheckableIconRow( .fillMaxWidth() .clickable { onClick() } ) { - Box( - modifier = Modifier - .padding(start = 16.dp, end = 32.dp, top = 12.dp, bottom = 12.dp) - .size(24.dp), - contentAlignment = Alignment.Center, - ) { - if (icon != null) { - Icon( - imageVector = icon, - contentDescription = null, - tint = tint, - ) - } - } + TasksIcon( + modifier = Modifier.padding( + start = 16.dp, + end = 32.dp, + top = 12.dp, + bottom = 12.dp + ), + label = icon, + tint = tint, + ) Box(modifier = Modifier.weight(1f)) { content() } diff --git a/kmp/src/commonMain/kotlin/org/tasks/compose/pickers/SearchableFilterPicker.kt b/kmp/src/commonMain/kotlin/org/tasks/compose/pickers/SearchableFilterPicker.kt index 658ff8b24..3e623f4a6 100644 --- a/kmp/src/commonMain/kotlin/org/tasks/compose/pickers/SearchableFilterPicker.kt +++ b/kmp/src/commonMain/kotlin/org/tasks/compose/pickers/SearchableFilterPicker.kt @@ -37,7 +37,7 @@ fun SearchableFilterPicker( onQueryChange: (String) -> Unit, selected: Filter?, onClick: (FilterListItem) -> Unit, - getIcon: @Composable (Filter) -> ImageVector?, + getIcon: @Composable (Filter) -> String?, getColor: (Filter) -> Int, ) { LazyColumn( diff --git a/kmp/src/commonMain/kotlin/org/tasks/themes/TasksIcons.kt b/kmp/src/commonMain/kotlin/org/tasks/themes/TasksIcons.kt index 54f750610..ee504fd11 100644 --- a/kmp/src/commonMain/kotlin/org/tasks/themes/TasksIcons.kt +++ b/kmp/src/commonMain/kotlin/org/tasks/themes/TasksIcons.kt @@ -21,4 +21,6 @@ object TasksIcons { const val KEYBOARD_ARROW_DOWN = "keyboard_arrow_down" const val SNOOZE = "snooze" const val TIMER = "timer" + const val BLOCK = "block" + const val EVENT = "event" }