|
|
|
|
@ -6,11 +6,14 @@ import androidx.compose.material.icons.Icons
|
|
|
|
|
import androidx.compose.material3.Icon
|
|
|
|
|
import androidx.compose.material3.MaterialTheme
|
|
|
|
|
import androidx.compose.runtime.Composable
|
|
|
|
|
import androidx.compose.runtime.remember
|
|
|
|
|
import androidx.compose.runtime.getValue
|
|
|
|
|
import androidx.compose.runtime.produceState
|
|
|
|
|
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 kotlinx.coroutines.Dispatchers
|
|
|
|
|
import kotlinx.coroutines.withContext
|
|
|
|
|
import org.tasks.compose.pickers.label
|
|
|
|
|
|
|
|
|
|
@Composable
|
|
|
|
|
@ -20,13 +23,18 @@ fun TasksIcon(
|
|
|
|
|
tint: Color = MaterialTheme.colorScheme.onSurface,
|
|
|
|
|
) {
|
|
|
|
|
Box(modifier = modifier.size(24.dp)) {
|
|
|
|
|
Icon(
|
|
|
|
|
imageVector = remember (label) {
|
|
|
|
|
val loadedImageVector by produceState<ImageVector?>(initialValue = null, label) {
|
|
|
|
|
value = withContext(Dispatchers.IO) {
|
|
|
|
|
imageVectorByName(label)
|
|
|
|
|
} ?: return@Box,
|
|
|
|
|
contentDescription = label,
|
|
|
|
|
tint = tint,
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
loadedImageVector?.let { vector ->
|
|
|
|
|
Icon(
|
|
|
|
|
imageVector = vector,
|
|
|
|
|
contentDescription = label,
|
|
|
|
|
tint = tint,
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|