diff --git a/app/src/main/java/org/tasks/compose/CheckBox.kt b/app/src/main/java/org/tasks/compose/CheckBox.kt new file mode 100644 index 000000000..b403bd466 --- /dev/null +++ b/app/src/main/java/org/tasks/compose/CheckBox.kt @@ -0,0 +1,34 @@ +package org.tasks.compose + +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material.Icon +import androidx.compose.material.IconButton +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource +import com.todoroo.astrid.data.Task +import org.tasks.themes.ColorProvider +import org.tasks.ui.CheckBoxProvider.Companion.getCheckboxRes + +@Composable +fun CheckBox( + task: Task, + onCompleteClick: () -> Unit, + modifier: Modifier = Modifier, + desaturate: Boolean, +) { + IconButton(onClick = onCompleteClick, modifier = modifier) { + Icon( + painter = painterResource(id = task.getCheckboxRes()), + tint = Color( + ColorProvider.priorityColor( + priority = task.priority, + isDarkMode = isSystemInDarkTheme(), + desaturate = desaturate, + ) + ), + contentDescription = null, + ) + } +} diff --git a/app/src/main/java/org/tasks/compose/SubtaskChip.kt b/app/src/main/java/org/tasks/compose/SubtaskChip.kt new file mode 100644 index 000000000..644609301 --- /dev/null +++ b/app/src/main/java/org/tasks/compose/SubtaskChip.kt @@ -0,0 +1,31 @@ +package org.tasks.compose + +import androidx.compose.runtime.Composable +import androidx.compose.ui.platform.LocalContext +import org.tasks.R +import org.tasks.data.TaskContainer +import java.text.NumberFormat + +@Composable +fun SubtaskChip( + task: TaskContainer, + compact: Boolean, + onClick: () -> Unit, +) { + val context = LocalContext.current + Chip( + icon = if (task.isCollapsed) + R.drawable.ic_keyboard_arrow_down_black_24dp + else + R.drawable.ic_keyboard_arrow_up_black_24dp, + name = if (compact) + NumberFormat.getInstance().format(task.children) + else + context.resources.getQuantityString(R.plurals.subtask_count, task.children, task.children), + theme = 0, + showText = true, + showIcon = true, + onClick = onClick, + colorProvider = { context.getColor(R.color.default_chip_background) }, + ) +} diff --git a/app/src/main/java/org/tasks/ui/ChipProvider.kt b/app/src/main/java/org/tasks/ui/ChipProvider.kt index 71438f4eb..7b7131017 100644 --- a/app/src/main/java/org/tasks/ui/ChipProvider.kt +++ b/app/src/main/java/org/tasks/ui/ChipProvider.kt @@ -13,9 +13,9 @@ import org.tasks.Strings.isNullOrEmpty import org.tasks.billing.Inventory import org.tasks.compose.Chip import org.tasks.compose.FilterChip +import org.tasks.compose.SubtaskChip import org.tasks.data.TaskContainer import org.tasks.date.DateTimeUtils.toDateTime -import org.tasks.extensions.formatNumber import org.tasks.filters.PlaceFilter import org.tasks.preferences.Preferences import org.tasks.themes.ColorProvider @@ -72,25 +72,6 @@ class ChipProvider @Inject constructor( ) } - @Composable - fun SubtaskChip( - task: TaskContainer, - compact: Boolean, - onClick: () -> Unit, - ) { - Chip( - if (task.isCollapsed) R.drawable.ic_keyboard_arrow_down_black_24dp else R.drawable.ic_keyboard_arrow_up_black_24dp, - if (compact) locale.formatNumber(task.children) else activity - .resources - .getQuantityString(R.plurals.subtask_count, task.children, task.children), - 0, - showText = true, - showIcon = true, - onClick = onClick, - colorProvider = this::getColor, - ) - } - @Composable fun Chips( filter: Filter?, diff --git a/app/src/main/java/org/tasks/ui/SubtaskControlSet.kt b/app/src/main/java/org/tasks/ui/SubtaskControlSet.kt index bcfefdca0..2430f5aec 100644 --- a/app/src/main/java/org/tasks/ui/SubtaskControlSet.kt +++ b/app/src/main/java/org/tasks/ui/SubtaskControlSet.kt @@ -7,12 +7,13 @@ import android.content.Intent import android.os.Bundle import androidx.compose.foundation.clickable import androidx.compose.foundation.focusable -import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.* import androidx.compose.foundation.text.BasicTextField import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions -import androidx.compose.material.* +import androidx.compose.material.ContentAlpha +import androidx.compose.material.MaterialTheme +import androidx.compose.material.Text import androidx.compose.runtime.* import androidx.compose.runtime.livedata.observeAsState import androidx.compose.ui.Alignment @@ -20,8 +21,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardCapitalization @@ -44,18 +43,13 @@ import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.launch import org.tasks.LocalBroadcastManager import org.tasks.R -import org.tasks.compose.ClearButton -import org.tasks.compose.DisabledText -import org.tasks.compose.TaskEditIcon -import org.tasks.compose.collectAsStateLifecycleAware +import org.tasks.compose.* import org.tasks.data.GoogleTask import org.tasks.data.GoogleTaskDao import org.tasks.data.TaskContainer import org.tasks.data.TaskDao.TaskCriteria.activeAndVisible import org.tasks.preferences.Preferences import org.tasks.themes.ColorProvider -import org.tasks.themes.ColorProvider.Companion.priorityColor -import org.tasks.ui.CheckBoxProvider.Companion.getCheckboxRes import javax.inject.Inject @AndroidEntryPoint @@ -210,7 +204,8 @@ class SubtaskControlSet : TaskEditControlComposeFragment() { CheckBox( task = subtask, onCompleteClick = { onComplete(subtask) }, - modifier = Modifier.align(Alignment.Top) + modifier = Modifier.align(Alignment.Top), + desaturate = preferences.desaturateDarkMode, ) var text by remember { mutableStateOf(subtask.title ?: "") } val focusRequester = remember { FocusRequester() } @@ -263,7 +258,11 @@ class SubtaskControlSet : TaskEditControlComposeFragment() { .padding(end = 16.dp) ) { Spacer(modifier = Modifier.width((indent * 20).dp)) - CheckBox(task = task.task, onCompleteClick = onCompleteClick) + CheckBox( + task = task.task, + onCompleteClick = onCompleteClick, + desaturate = preferences.desaturateDarkMode + ) Text( text = task.title, modifier = Modifier @@ -274,7 +273,7 @@ class SubtaskControlSet : TaskEditControlComposeFragment() { ) ) if (task.hasChildren()) { - chipProvider.SubtaskChip( + SubtaskChip( task = task, compact = true, onClick = onToggleSubtaskClick, @@ -283,27 +282,6 @@ class SubtaskControlSet : TaskEditControlComposeFragment() { } } - @Composable - fun CheckBox( - task: Task, - onCompleteClick: () -> Unit, - modifier: Modifier = Modifier, - ) { - IconButton(onClick = onCompleteClick, modifier = modifier) { - Icon( - painter = painterResource(id = task.getCheckboxRes()), - tint = Color( - priorityColor( - priority = task.priority, - isDarkMode = isSystemInDarkTheme(), - desaturate = preferences.desaturateDarkMode, - ) - ), - contentDescription = null, - ) - } - } - companion object { const val TAG = R.string.TEA_ctrl_subtask_pref private fun getQueryTemplate(task: Task): QueryTemplate = QueryTemplate() @@ -325,3 +303,4 @@ class SubtaskControlSet : TaskEditControlComposeFragment() { ) } } +