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.billing.Inventory
import org.tasks.compose.Chip import org.tasks.compose.Chip
import org.tasks.compose.FilterChip import org.tasks.compose.FilterChip
import org.tasks.compose.SubtaskChip
import org.tasks.data.TaskContainer import org.tasks.data.TaskContainer
import org.tasks.date.DateTimeUtils.toDateTime import org.tasks.date.DateTimeUtils.toDateTime
import org.tasks.extensions.formatNumber
import org.tasks.filters.PlaceFilter import org.tasks.filters.PlaceFilter
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.themes.ColorProvider 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 @Composable
fun Chips( fun Chips(
filter: Filter?, filter: Filter?,

@ -7,12 +7,13 @@ import android.content.Intent
import android.os.Bundle import android.os.Bundle
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.focusable import androidx.compose.foundation.focusable
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.foundation.text.BasicTextField import androidx.compose.foundation.text.BasicTextField
import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions 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.*
import androidx.compose.runtime.livedata.observeAsState import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
@ -20,8 +21,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.alpha
import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.FocusRequester
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.res.stringResource
import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.KeyboardCapitalization import androidx.compose.ui.text.input.KeyboardCapitalization
@ -44,18 +43,13 @@ import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.tasks.LocalBroadcastManager import org.tasks.LocalBroadcastManager
import org.tasks.R import org.tasks.R
import org.tasks.compose.ClearButton import org.tasks.compose.*
import org.tasks.compose.DisabledText
import org.tasks.compose.TaskEditIcon
import org.tasks.compose.collectAsStateLifecycleAware
import org.tasks.data.GoogleTask import org.tasks.data.GoogleTask
import org.tasks.data.GoogleTaskDao import org.tasks.data.GoogleTaskDao
import org.tasks.data.TaskContainer import org.tasks.data.TaskContainer
import org.tasks.data.TaskDao.TaskCriteria.activeAndVisible import org.tasks.data.TaskDao.TaskCriteria.activeAndVisible
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.themes.ColorProvider import org.tasks.themes.ColorProvider
import org.tasks.themes.ColorProvider.Companion.priorityColor
import org.tasks.ui.CheckBoxProvider.Companion.getCheckboxRes
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
@ -210,7 +204,8 @@ class SubtaskControlSet : TaskEditControlComposeFragment() {
CheckBox( CheckBox(
task = subtask, task = subtask,
onCompleteClick = { onComplete(subtask) }, onCompleteClick = { onComplete(subtask) },
modifier = Modifier.align(Alignment.Top) modifier = Modifier.align(Alignment.Top),
desaturate = preferences.desaturateDarkMode,
) )
var text by remember { mutableStateOf(subtask.title ?: "") } var text by remember { mutableStateOf(subtask.title ?: "") }
val focusRequester = remember { FocusRequester() } val focusRequester = remember { FocusRequester() }
@ -263,7 +258,11 @@ class SubtaskControlSet : TaskEditControlComposeFragment() {
.padding(end = 16.dp) .padding(end = 16.dp)
) { ) {
Spacer(modifier = Modifier.width((indent * 20).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(
text = task.title, text = task.title,
modifier = Modifier modifier = Modifier
@ -274,7 +273,7 @@ class SubtaskControlSet : TaskEditControlComposeFragment() {
) )
) )
if (task.hasChildren()) { if (task.hasChildren()) {
chipProvider.SubtaskChip( SubtaskChip(
task = task, task = task,
compact = true, compact = true,
onClick = onToggleSubtaskClick, 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 { companion object {
const val TAG = R.string.TEA_ctrl_subtask_pref const val TAG = R.string.TEA_ctrl_subtask_pref
private fun getQueryTemplate(task: Task): QueryTemplate = QueryTemplate() private fun getQueryTemplate(task: Task): QueryTemplate = QueryTemplate()
@ -325,3 +303,4 @@ class SubtaskControlSet : TaskEditControlComposeFragment() {
) )
} }
} }

Loading…
Cancel
Save