CheckBox and SubtaskChip composables

pull/1952/head
Alex Baker 2 years ago
parent d48d457a3d
commit b6efff59b4

@ -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,
)
}
}

@ -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) },
)
}

@ -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?,

@ -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() {
)
}
}

Loading…
Cancel
Save