Migrate to compose material3

pull/1926/merge
Alex Baker 2 weeks ago
parent b918e87e05
commit 4c1121869d

@ -235,7 +235,6 @@ dependencies {
implementation("androidx.compose.foundation:foundation")
implementation("androidx.compose.material:material")
implementation("androidx.compose.runtime:runtime-livedata")
implementation(libs.compose.theme.adapter)
implementation(libs.androidx.activity.compose)
implementation("androidx.compose.material:material-icons-extended")
implementation(libs.androidx.lifecycle.viewmodel.compose)

@ -20,7 +20,6 @@ import androidx.lifecycle.Lifecycle
import androidx.lifecycle.flowWithLifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.google.android.material.composethemeadapter.MdcTheme
import com.todoroo.andlib.utility.AndroidUtilities
import com.todoroo.astrid.activity.TaskEditFragment.Companion.newTaskEditFragment
import com.todoroo.astrid.adapter.SubheaderClickHandler
@ -60,6 +59,7 @@ import org.tasks.location.LocationPickerActivity.Companion.EXTRA_PLACE
import org.tasks.preferences.DefaultFilterProvider
import org.tasks.preferences.Preferences
import org.tasks.themes.ColorProvider
import org.tasks.themes.TasksTheme
import org.tasks.themes.Theme
import org.tasks.ui.EmptyTaskEditFragment.Companion.newEmptyTaskEditFragment
import org.tasks.ui.MainActivityEvent
@ -108,7 +108,7 @@ class MainActivity : AppCompatActivity() {
binding.composeView.setContent {
val state = viewModel.state.collectAsStateLifecycleAware().value
if (state.drawerOpen) {
MdcTheme {
TasksTheme {
TasksMenu(
bottomPadding = WindowInsets.mandatorySystemGestures
.asPaddingValues()

@ -23,7 +23,7 @@ import androidx.appcompat.widget.Toolbar
import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material.Divider
import androidx.compose.material3.Divider
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
@ -42,7 +42,6 @@ import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.appbar.AppBarLayout.Behavior.DragCallback
import com.google.android.material.composethemeadapter.MdcTheme
import com.todoroo.andlib.utility.AndroidUtilities.atLeastOreoMR1
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.api.Filter
@ -103,6 +102,7 @@ import org.tasks.markdown.MarkdownProvider
import org.tasks.notifications.NotificationManager
import org.tasks.play.PlayServices
import org.tasks.preferences.Preferences
import org.tasks.themes.TasksTheme
import org.tasks.ui.CalendarControlSet
import org.tasks.ui.ChipProvider
import org.tasks.ui.LocationControlSet
@ -272,7 +272,7 @@ class TaskEditFragment : Fragment(), Toolbar.OnMenuItemClickListener {
}
}
binding.composeView.setContent {
MdcTheme {
TasksTheme {
Column(modifier = Modifier.gesturesDisabled(editViewModel.isReadOnly)) {
taskEditControlSetFragmentManager.displayOrder.forEachIndexed { index, tag ->
if (index < taskEditControlSetFragmentManager.visibleSize) {
@ -340,7 +340,7 @@ class TaskEditFragment : Fragment(), Toolbar.OnMenuItemClickListener {
binding.banner.setContent {
var visible by rememberSaveable { mutableStateOf(true) }
val context = LocalContext.current
MdcTheme {
TasksTheme {
BeastModeBanner(
visible,
showSettings = {

@ -47,7 +47,6 @@ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener
import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.bottomappbar.BottomAppBar
import com.google.android.material.composethemeadapter.MdcTheme
import com.google.android.material.snackbar.Snackbar
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.adapter.TaskAdapter
@ -124,6 +123,7 @@ import org.tasks.tasklist.SectionedDataSource
import org.tasks.tasklist.TaskViewHolder
import org.tasks.tasklist.ViewHolderFactory
import org.tasks.themes.ColorProvider
import org.tasks.themes.TasksTheme
import org.tasks.themes.ThemeColor
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import org.tasks.ui.TaskEditEvent
@ -344,7 +344,7 @@ class TaskListFragment : Fragment(), OnRefreshListener, Toolbar.OnMenuItemClickL
binding.banner.setContent {
val context = LocalContext.current
val showBanner = listViewModel.state.collectAsStateLifecycleAware().value.begForSubscription
MdcTheme {
TasksTheme {
SubscriptionNagBanner(
visible = showBanner,
subscribe = {

@ -13,7 +13,6 @@ import android.view.View
import android.view.ViewGroup
import androidx.compose.ui.platform.ComposeView
import androidx.lifecycle.lifecycleScope
import com.google.android.material.composethemeadapter.MdcTheme
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
@ -26,6 +25,7 @@ import org.tasks.data.dao.TaskAttachmentDao
import org.tasks.dialogs.AddAttachmentDialog
import org.tasks.files.FileHelper
import org.tasks.preferences.Preferences
import org.tasks.themes.TasksTheme
import org.tasks.ui.TaskEditControlFragment
import javax.inject.Inject
@ -48,7 +48,7 @@ class FilesControlSet : TaskEditControlFragment() {
override fun bind(parent: ViewGroup?): View =
(parent as ComposeView).apply {
setContent {
MdcTheme {
TasksTheme {
AttachmentRow(
attachments = viewModel.selectedAttachments.collectAsStateLifecycleAware().value,
openAttachment = {

@ -12,7 +12,6 @@ import android.view.View
import android.view.ViewGroup
import androidx.compose.ui.platform.ComposeView
import androidx.lifecycle.lifecycleScope
import com.google.android.material.composethemeadapter.MdcTheme
import com.todoroo.astrid.api.CaldavFilter
import com.todoroo.astrid.api.GtasksFilter
import dagger.hilt.android.AndroidEntryPoint
@ -27,6 +26,7 @@ import org.tasks.data.dao.CaldavDao
import org.tasks.repeats.BasicRecurrenceDialog
import org.tasks.repeats.RecurrenceUtils.newRecur
import org.tasks.repeats.RepeatRuleToString
import org.tasks.themes.TasksTheme
import org.tasks.time.DateTime
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import org.tasks.ui.TaskEditControlFragment
@ -85,7 +85,7 @@ class RepeatControlSet : TaskEditControlFragment() {
override fun bind(parent: ViewGroup?): View =
(parent as ComposeView).apply {
setContent {
MdcTheme {
TasksTheme {
RepeatRow(
recurrence = viewModel.recurrence.collectAsStateLifecycleAware().value?.let {
repeatRuleToString.toString(it)

@ -5,13 +5,13 @@ import android.content.Intent
import android.view.View
import android.view.ViewGroup
import androidx.compose.ui.platform.ComposeView
import com.google.android.material.composethemeadapter.MdcTheme
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.update
import org.tasks.R
import org.tasks.compose.collectAsStateLifecycleAware
import org.tasks.compose.edit.TagsRow
import org.tasks.tags.TagPickerActivity
import org.tasks.themes.TasksTheme
import org.tasks.ui.ChipProvider
import org.tasks.ui.TaskEditControlFragment
import javax.inject.Inject
@ -29,7 +29,7 @@ class TagsControlSet : TaskEditControlFragment() {
override fun bind(parent: ViewGroup?): View =
(parent as ComposeView).apply {
setContent {
MdcTheme {
TasksTheme {
TagsRow(
tags = viewModel.selectedTags.collectAsStateLifecycleAware().value,
colorProvider = { chipProvider.getColor(it) },

@ -13,17 +13,17 @@ import android.view.ViewGroup
import androidx.appcompat.app.AlertDialog
import androidx.compose.ui.platform.ComposeView
import androidx.lifecycle.lifecycleScope
import com.google.android.material.composethemeadapter.MdcTheme
import com.todoroo.andlib.utility.DateUtilities
import org.tasks.data.entity.Task
import com.todoroo.astrid.ui.TimeDurationControlSet
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import org.tasks.R
import org.tasks.compose.collectAsStateLifecycleAware
import org.tasks.compose.edit.TimerRow
import org.tasks.data.entity.Task
import org.tasks.date.DateTimeUtils
import org.tasks.dialogs.DialogBuilder
import org.tasks.themes.TasksTheme
import org.tasks.themes.Theme
import org.tasks.ui.TaskEditControlFragment
import javax.inject.Inject
@ -89,7 +89,7 @@ class TimerControlSet : TaskEditControlFragment() {
override fun bind(parent: ViewGroup?): View =
(parent as ComposeView).apply {
setContent {
MdcTheme {
TasksTheme {
TimerRow(
started = viewModel.timerStarted.collectAsStateLifecycleAware().value,
estimated = viewModel.estimatedSeconds.collectAsStateLifecycleAware().value,

@ -17,7 +17,6 @@ import androidx.compose.ui.platform.ComposeView
import com.google.accompanist.permissions.ExperimentalPermissionsApi
import com.google.accompanist.permissions.PermissionStatus
import com.google.accompanist.permissions.rememberPermissionState
import com.google.android.material.composethemeadapter.MdcTheme
import com.todoroo.andlib.utility.AndroidUtilities
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.R
@ -30,6 +29,7 @@ import org.tasks.date.DateTimeUtils
import org.tasks.dialogs.DialogBuilder
import org.tasks.dialogs.MyTimePickerDialog
import org.tasks.scheduling.NotificationSchedulerIntentService
import org.tasks.themes.TasksTheme
import org.tasks.ui.TaskEditControlFragment
import java.util.Locale
import javax.inject.Inject
@ -76,7 +76,7 @@ class ReminderControlSet : TaskEditControlFragment() {
override fun bind(parent: ViewGroup?): View =
(parent as ComposeView).apply {
setContent {
MdcTheme {
TasksTheme {
val ringMode by remember { this@ReminderControlSet.ringMode }
val notificationPermissions = if (AndroidUtilities.atLeastTiramisu()) {
rememberPermissionState(

@ -8,7 +8,6 @@ import android.view.ViewGroup
import androidx.compose.ui.platform.ComposeView
import androidx.fragment.app.viewModels
import androidx.lifecycle.lifecycleScope
import com.google.android.material.composethemeadapter.MdcTheme
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.andlib.utility.DateUtilities.getTimeString
import dagger.hilt.android.AndroidEntryPoint
@ -22,9 +21,10 @@ import org.tasks.dialogs.StartDatePicker.Companion.EXTRA_TIME
import org.tasks.dialogs.StartDatePicker.Companion.NO_DAY
import org.tasks.dialogs.StartDatePicker.Companion.NO_TIME
import org.tasks.preferences.Preferences
import org.tasks.themes.TasksTheme
import org.tasks.ui.TaskEditControlFragment
import java.time.format.FormatStyle
import java.util.*
import java.util.Locale
import javax.inject.Inject
@AndroidEntryPoint
@ -48,7 +48,7 @@ class StartDateControlSet : TaskEditControlFragment() {
override fun bind(parent: ViewGroup?) =
(parent as ComposeView).apply {
setContent {
MdcTheme {
TasksTheme {
val selectedDay = vm.selectedDay.collectAsStateLifecycleAware().value
val selectedTime = vm.selectedTime.collectAsStateLifecycleAware().value
StartDateRow(

@ -9,7 +9,7 @@ import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.CircularProgressIndicator
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember

@ -28,7 +28,6 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.window.Dialog
import androidx.lifecycle.lifecycleScope
import at.bitfire.dav4jvm.exception.HttpException
import com.google.android.material.composethemeadapter.MdcTheme
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import net.openid.appauth.*
@ -42,6 +41,7 @@ import org.tasks.compose.ConsentDialog
import org.tasks.compose.SignInDialog
import org.tasks.dialogs.DialogBuilder
import org.tasks.extensions.Context.openUri
import org.tasks.themes.TasksTheme
import org.tasks.themes.ThemeColor
import timber.log.Timber
import java.util.concurrent.CountDownLatch
@ -98,7 +98,7 @@ class SignInActivity : ComponentActivity() {
var selectedPlatform by rememberSaveable {
mutableStateOf(autoSelect)
}
MdcTheme {
TasksTheme {
selectedPlatform
?.let {
Dialog(onDismissRequest = { finish() }) {

@ -9,7 +9,6 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.compose.runtime.mutableStateOf
import androidx.compose.ui.window.Dialog
import androidx.lifecycle.lifecycleScope
import com.google.android.material.composethemeadapter.MdcTheme
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import org.tasks.LocalBroadcastManager
@ -18,6 +17,7 @@ import org.tasks.analytics.Firebase
import org.tasks.compose.PurchaseText.PurchaseText
import org.tasks.extensions.Context.toast
import org.tasks.preferences.Preferences
import org.tasks.themes.TasksTheme
import org.tasks.themes.Theme
import java.util.Locale
import javax.inject.Inject
@ -53,7 +53,7 @@ class PurchaseActivity : AppCompatActivity(), OnPurchasesUpdated {
}
setContent {
MdcTheme {
TasksTheme {
Dialog(onDismissRequest = { finish() }) {
PurchaseText(
nameYourPrice = nameYourPrice,

@ -22,7 +22,6 @@ import androidx.core.widget.addTextChangedListener
import androidx.lifecycle.lifecycleScope
import at.bitfire.dav4jvm.exception.HttpException
import com.franmontiel.persistentcookiejar.persistence.CookiePersistor
import com.google.android.material.composethemeadapter.MdcTheme
import com.google.android.material.snackbar.BaseTransientBottomBar
import com.google.android.material.snackbar.Snackbar
import org.tasks.data.entity.Task
@ -47,6 +46,7 @@ import org.tasks.extensions.Context.openUri
import org.tasks.extensions.addBackPressedCallback
import org.tasks.injection.ThemedInjectingAppCompatActivity
import org.tasks.security.KeyStoreEncryption
import org.tasks.themes.TasksTheme
import org.tasks.ui.DisplayableException
import timber.log.Timber
import java.net.ConnectException
@ -138,7 +138,7 @@ abstract class BaseCaldavAccountSettingsActivity : ThemedInjectingAppCompatActiv
)
binding.password.setOnFocusChangeListener { _, hasFocus -> onPasswordFocused(hasFocus) }
binding.serverSelector.setContent {
MdcTheme {
TasksTheme {
var selected by rememberSaveable { serverType }
ServerSelector(selected) {
serverType.value = it

@ -2,16 +2,15 @@ package org.tasks.caldav
import android.os.Bundle
import androidx.activity.viewModels
import androidx.compose.material.FloatingActionButton
import androidx.compose.material.Icon
import androidx.compose.material.MaterialTheme
import androidx.compose.material3.FloatingActionButton
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.res.painterResource
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
import com.google.android.material.composethemeadapter.MdcTheme
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import org.tasks.R
@ -27,6 +26,7 @@ import org.tasks.data.entity.CaldavAccount.Companion.SERVER_SABREDAV
import org.tasks.data.entity.CaldavAccount.Companion.SERVER_TASKS
import org.tasks.data.entity.CaldavCalendar
import org.tasks.data.entity.CaldavCalendar.Companion.ACCESS_OWNER
import org.tasks.themes.TasksTheme
import javax.inject.Inject
@AndroidEntryPoint
@ -53,7 +53,7 @@ class CaldavCalendarSettingsActivity : BaseCaldavCalendarSettingsActivity() {
caldavCalendar?.takeIf { it.id > 0 }?.let {
findViewById<ComposeView>(R.id.people).setContent {
MdcTheme {
TasksTheme {
val principals = principalDao.getPrincipals(it.id).collectAsStateLifecycleAware(initial = emptyList()).value
PrincipalList(
principals = principals,
@ -66,7 +66,7 @@ class CaldavCalendarSettingsActivity : BaseCaldavCalendarSettingsActivity() {
findViewById<ComposeView>(R.id.fab)
.apply { isVisible = true }
.setContent {
MdcTheme {
TasksTheme {
val openDialog = rememberSaveable { mutableStateOf(false) }
ShareInviteDialog(
openDialog,
@ -77,11 +77,14 @@ class CaldavCalendarSettingsActivity : BaseCaldavCalendarSettingsActivity() {
openDialog.value = false
}
}
FloatingActionButton(onClick = { openDialog.value = true }) {
FloatingActionButton(
onClick = { openDialog.value = true },
containerColor = MaterialTheme.colorScheme.primary
) {
Icon(
painter = painterResource(R.drawable.ic_outline_person_add_24),
contentDescription = null,
tint = MaterialTheme.colors.onPrimary,
tint = MaterialTheme.colorScheme.onPrimary,
)
}
}

@ -5,14 +5,14 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.ContentAlpha
import androidx.compose.material.MaterialTheme
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import com.google.android.material.composethemeadapter.MdcTheme
import org.tasks.BuildConfig
import org.tasks.R
import org.tasks.sync.AddAccountDialog.Platform
import org.tasks.themes.TasksTheme
@Composable
fun AddAccountDialog(
@ -52,7 +52,7 @@ fun AddAccountDialog(
title = R.string.caldav,
description = R.string.caldav_selection_description,
icon = R.drawable.ic_webdav_logo,
tint = MaterialTheme.colors.onSurface.copy(
tint = MaterialTheme.colorScheme.onSurface.copy(
alpha = ContentAlpha.medium
),
onClick = { selected(Platform.CALDAV) }
@ -76,7 +76,7 @@ fun AddAccountDialog(
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun AddAccountDialogPreview() {
MdcTheme {
TasksTheme {
AddAccountDialog(hasTasksAccount = false, selected = {})
}
}

@ -12,17 +12,17 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.AlertDialog
import androidx.compose.material.Divider
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.MaterialTheme
import androidx.compose.material.OutlinedTextField
import androidx.compose.material.RadioButton
import androidx.compose.material.Text
import androidx.compose.material.TextFieldDefaults
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Autorenew
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Divider
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.OutlinedTextFieldDefaults
import androidx.compose.material3.RadioButton
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.MutableState
@ -45,7 +45,6 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.core.content.res.ResourcesCompat
import com.google.android.material.composethemeadapter.MdcTheme
import com.todoroo.astrid.ui.ReminderControlSetViewModel.ViewState
import kotlinx.coroutines.android.awaitFrame
import org.tasks.R
@ -56,6 +55,7 @@ import org.tasks.data.entity.Alarm.Companion.TYPE_REL_END
import org.tasks.data.entity.Alarm.Companion.TYPE_REL_START
import org.tasks.data.entity.Alarm.Companion.whenStarted
import org.tasks.reminders.AlarmToString.Companion.getRepeatString
import org.tasks.themes.TasksTheme
import java.util.concurrent.TimeUnit
@ExperimentalComposeUiApi
@ -411,9 +411,11 @@ fun OutlinedIntInput(
},
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
modifier = modifier.padding(horizontal = 16.dp),
colors = TextFieldDefaults.outlinedTextFieldColors(
textColor = MaterialTheme.colors.onSurface,
focusedBorderColor = MaterialTheme.colors.onSurface
colors = OutlinedTextFieldDefaults.colors(
focusedTextColor = MaterialTheme.colorScheme.onSurface,
unfocusedTextColor = MaterialTheme.colorScheme.onSurface,
focusedBorderColor = MaterialTheme.colorScheme.onSurface,
unfocusedBorderColor = MaterialTheme.colorScheme.onSurface,
),
isError = value.value.text.toIntOrNull()?.let { it < minValue } ?: true,
)
@ -432,8 +434,8 @@ fun CenteredH6(text: String) {
modifier = Modifier
.fillMaxWidth()
.padding(vertical = 16.dp),
color = MaterialTheme.colors.onSurface,
style = MaterialTheme.typography.h6
color = MaterialTheme.colorScheme.onSurface,
style = MaterialTheme.typography.titleLarge
)
}
@ -475,8 +477,8 @@ fun BodyText(modifier: Modifier = Modifier, text: String) {
Text(
text = text,
modifier = modifier,
color = MaterialTheme.colors.onSurface,
style = MaterialTheme.typography.body1,
color = MaterialTheme.colorScheme.onSurface,
style = MaterialTheme.typography.bodyLarge,
)
}
@ -549,7 +551,7 @@ fun AddAlarmDialog(
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
fun AddCustomReminderOne() =
MdcTheme {
TasksTheme {
AddReminderDialog.AddCustomReminder(
time = remember { mutableStateOf(1) },
units = remember { mutableStateOf(0) },
@ -565,7 +567,7 @@ fun AddCustomReminderOne() =
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
fun AddCustomReminder() =
MdcTheme {
TasksTheme {
AddReminderDialog.AddCustomReminder(
time = remember { mutableStateOf(15) },
units = remember { mutableStateOf(1) },
@ -581,7 +583,7 @@ fun AddCustomReminder() =
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
fun AddRepeatingReminderOne() =
MdcTheme {
TasksTheme {
AddReminderDialog.AddRecurringReminder(
openDialog = true,
interval = remember { mutableStateOf(1) },
@ -595,7 +597,7 @@ fun AddRepeatingReminderOne() =
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
fun AddRepeatingReminder() =
MdcTheme {
TasksTheme {
AddReminderDialog.AddRecurringReminder(
openDialog = true,
interval = remember { mutableStateOf(15) },
@ -609,7 +611,7 @@ fun AddRepeatingReminder() =
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
fun AddRandomReminderOne() =
MdcTheme {
TasksTheme {
AddReminderDialog.AddRandomReminder(
time = remember { mutableStateOf(1) },
units = remember { mutableStateOf(0) }
@ -621,7 +623,7 @@ fun AddRandomReminderOne() =
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
fun AddRandomReminder() =
MdcTheme {
TasksTheme {
AddReminderDialog.AddRandomReminder(
time = remember { mutableStateOf(15) },
units = remember { mutableStateOf(1) }
@ -632,7 +634,7 @@ fun AddRandomReminder() =
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
fun AddReminderDialog() =
MdcTheme {
TasksTheme {
AddAlarmDialog(
viewState = ViewState(showAddAlarm = true),
existingAlarms = emptyList(),

@ -12,19 +12,19 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.material.Divider
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material.TextButton
import androidx.compose.material3.Divider
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.android.material.composethemeadapter.MdcTheme
import org.tasks.R
import org.tasks.Tasks
import org.tasks.themes.TasksTheme
@ExperimentalAnimationApi
@Composable
@ -76,8 +76,9 @@ fun SubscriptionNagBanner(
R.string.tasks_needs_your_support
}
),
style = MaterialTheme.typography.body1,
style = MaterialTheme.typography.bodyLarge,
modifier = Modifier.padding(horizontal = 16.dp),
color = MaterialTheme.colorScheme.onSurface,
)
Spacer(modifier = Modifier.height(4.dp))
Text(
@ -88,8 +89,9 @@ fun SubscriptionNagBanner(
R.string.support_development_subscribe
}
),
style = MaterialTheme.typography.body2,
style = MaterialTheme.typography.bodyMedium,
modifier = Modifier.padding(horizontal = 16.dp),
color = MaterialTheme.colorScheme.onSurface,
)
},
buttons = {
@ -116,14 +118,16 @@ fun BeastModeBanner(
content = {
Text(
text = stringResource(id = R.string.hint_customize_edit_title),
style = MaterialTheme.typography.body1,
style = MaterialTheme.typography.bodyLarge,
modifier = Modifier.padding(horizontal = 16.dp),
color = MaterialTheme.colorScheme.onSurface,
)
Spacer(modifier = Modifier.height(4.dp))
Text(
text = stringResource(id = R.string.hint_customize_edit_body),
style = MaterialTheme.typography.body2,
style = MaterialTheme.typography.bodyMedium,
modifier = Modifier.padding(horizontal = 16.dp),
color = MaterialTheme.colorScheme.onSurface,
)
},
buttons = {
@ -138,8 +142,8 @@ fun BannerTextButton(text: Int, onClick: () -> Unit) {
TextButton(onClick = onClick) {
Text(
text = stringResource(id = text),
style = MaterialTheme.typography.button.copy(
color = MaterialTheme.colors.secondary
style = MaterialTheme.typography.labelLarge.copy(
color = MaterialTheme.colorScheme.onSurface
),
)
}
@ -149,7 +153,7 @@ fun BannerTextButton(text: Int, onClick: () -> Unit) {
@Preview(showBackground = true)
@Preview(showBackground = true, backgroundColor = 0x202124, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
private fun BeastModePreview() = MdcTheme {
private fun BeastModePreview() = TasksTheme {
BeastModeBanner(visible = true, showSettings = {}, dismiss = {})
}
@ -157,7 +161,7 @@ private fun BeastModePreview() = MdcTheme {
@Preview(showBackground = true)
@Preview(showBackground = true, backgroundColor = 0x202124, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
private fun SubscriptionNagPreview() = MdcTheme {
private fun SubscriptionNagPreview() = TasksTheme {
SubscriptionNagBanner(visible = true, subscribe = {}, dismiss = {})
}

@ -1,8 +1,8 @@
package org.tasks.compose
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color

@ -6,16 +6,16 @@ import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.defaultMinSize
import androidx.compose.foundation.layout.size
import androidx.compose.material.ChipDefaults
import androidx.compose.material.ContentAlpha
import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.FilterChip
import androidx.compose.material.Icon
import androidx.compose.material.LocalMinimumInteractiveComponentEnforcement
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Cancel
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.FilterChip
import androidx.compose.material3.FilterChipDefaults
import androidx.compose.material3.Icon
import androidx.compose.material3.LocalMinimumInteractiveComponentEnforcement
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.remember
@ -28,9 +28,9 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.android.material.composethemeadapter.MdcTheme
import org.tasks.R
import org.tasks.themes.CustomIcons
import org.tasks.themes.TasksTheme
@Composable
fun Chip(
@ -52,7 +52,7 @@ fun Chip(
)
}
@OptIn(ExperimentalMaterialApi::class)
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun Chip(
text: String? = null,
@ -86,23 +86,24 @@ fun Chip(
}
},
modifier = Modifier.defaultMinSize(minHeight = 26.dp),
colors = ChipDefaults.outlinedFilterChipColors(
backgroundColor = color.copy(alpha = .1f),
contentColor = MaterialTheme.colors.onSurface
colors = FilterChipDefaults.filterChipColors(
containerColor = color.copy(alpha = .1f),
labelColor = MaterialTheme.colorScheme.onSurface,
),
) {
if (text == null) {
ChipIcon(iconRes = icon)
}
text?.let {
Text(
text = it,
style = MaterialTheme.typography.caption,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
)
label = {
if (text == null) {
ChipIcon(iconRes = icon)
}
text?.let {
Text(
text = it,
style = MaterialTheme.typography.bodySmall,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
)
}
}
}
)
}
}
@ -122,7 +123,7 @@ private fun ChipIcon(iconRes: Int?) {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
fun TasksChipIconAndTextPreview() {
MdcTheme {
TasksTheme {
Chip(
text = "Home",
icon = CustomIcons.getIconResId(CustomIcons.LABEL),
@ -136,7 +137,7 @@ fun TasksChipIconAndTextPreview() {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
fun TasksChipIconTextAndClearPreview() {
MdcTheme {
TasksTheme {
Chip(
text = "Home",
icon = CustomIcons.getIconResId(CustomIcons.LABEL),
@ -151,7 +152,7 @@ fun TasksChipIconTextAndClearPreview() {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
fun TasksChipIconPreview() {
MdcTheme {
TasksTheme {
Chip(
text = null,
icon = CustomIcons.getIconResId(CustomIcons.LABEL),
@ -165,7 +166,7 @@ fun TasksChipIconPreview() {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
fun TasksChipTextPreview() {
MdcTheme {
TasksTheme {
Chip(
text = "Home",
icon = null,

@ -1,10 +1,11 @@
package org.tasks.compose
import androidx.compose.material.ContentAlpha
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Clear
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
@ -17,7 +18,8 @@ fun ClearButton(onClick: () -> Unit) {
Icon(
imageVector = Icons.Outlined.Clear,
modifier = Modifier.alpha(ContentAlpha.medium),
contentDescription = stringResource(id = R.string.delete)
contentDescription = stringResource(id = R.string.delete),
tint = MaterialTheme.colorScheme.onSurface,
)
}
}

@ -1,15 +1,15 @@
package org.tasks.compose
import androidx.annotation.StringRes
import androidx.compose.material.ButtonDefaults
import androidx.compose.material.ContentAlpha
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material.TextFieldDefaults
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedTextFieldDefaults
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import java.util.*
import java.util.Locale
object Constants {
const val ICON_ALPHA = 0.54f
@ -18,26 +18,25 @@ object Constants {
@Composable
fun TextButton(@StringRes text: Int, onClick: () -> Unit) {
androidx.compose.material.TextButton(
androidx.compose.material3.TextButton(
onClick = onClick,
colors = textButtonColors()
) {
Text(
stringResource(text).uppercase(Locale.getDefault()),
style = MaterialTheme.typography.button
style = MaterialTheme.typography.labelLarge
)
}
}
@Composable
fun textButtonColors() = ButtonDefaults.textButtonColors(
contentColor = MaterialTheme.colors.secondary
contentColor = MaterialTheme.colorScheme.onSecondary
)
@Composable
fun textFieldColors() = TextFieldDefaults.textFieldColors(
cursorColor = MaterialTheme.colors.secondary,
focusedLabelColor = MaterialTheme.colors.secondary.copy(alpha = ContentAlpha.high),
focusedIndicatorColor = MaterialTheme.colors.secondary.copy(alpha = ContentAlpha.high),
fun textFieldColors() = OutlinedTextFieldDefaults.colors(
cursorColor = MaterialTheme.colorScheme.secondary,
focusedTextColor = MaterialTheme.colorScheme.onSecondary.copy(alpha = ContentAlpha.high),
)
}

@ -1,8 +1,9 @@
package org.tasks.compose
import androidx.compose.foundation.layout.padding
import androidx.compose.material.Card
import androidx.compose.material.MaterialTheme
import androidx.compose.material3.Card
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
@ -21,7 +22,7 @@ fun CustomDialog(
Card(
shape = MaterialTheme.shapes.medium,
modifier = Modifier.padding(16.dp),
elevation = 8.dp
elevation = CardDefaults.cardElevation(defaultElevation = 8.dp),
) {
content()
}

@ -1,10 +1,10 @@
package org.tasks.compose
import androidx.compose.material.ContentAlpha
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Delete
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha

@ -4,8 +4,8 @@ import androidx.annotation.StringRes
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
@ -19,7 +19,7 @@ fun DialogRow(@StringRes text: Int, onClick: () -> Unit) {
.clickable { onClick() }
.fillMaxWidth()
.padding(horizontal = 16.dp, vertical = 12.dp),
color = MaterialTheme.colors.onSurface,
style = MaterialTheme.typography.body1,
color = MaterialTheme.colorScheme.onSurface,
style = MaterialTheme.typography.bodyLarge,
)
}

@ -3,8 +3,8 @@ package org.tasks.compose
import androidx.compose.foundation.layout.defaultMinSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material.ContentAlpha
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
@ -17,10 +17,11 @@ fun DisabledText(
) {
Text(
text = text,
style = MaterialTheme.typography.body1,
style = MaterialTheme.typography.bodyLarge,
modifier = modifier
.alpha(alpha = ContentAlpha.disabled)
.padding(end = 16.dp)
.defaultMinSize(minHeight = 24.dp),
color = MaterialTheme.colorScheme.onSurface,
)
}

@ -6,14 +6,14 @@ import androidx.compose.foundation.layout.BoxScope
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.MaterialTheme
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
@Composable
fun border() = MaterialTheme.colors.onSurface.copy(alpha = .5f)
fun border() = MaterialTheme.colorScheme.onSurface.copy(alpha = .5f)
@Composable
fun OutlinedBox(

@ -3,13 +3,13 @@ package org.tasks.compose
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.material.DropdownMenu
import androidx.compose.material.DropdownMenuItem
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.ArrowDropDown
import androidx.compose.material3.DropdownMenu
import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
@ -34,11 +34,14 @@ fun OutlinedSpinner(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.padding(start = 8.dp),
) {
Text(text = text)
Text(
text = text,
color = MaterialTheme.colorScheme.onSurface,
)
Icon(
imageVector = Icons.Outlined.ArrowDropDown,
contentDescription = null,
tint = MaterialTheme.colors.onSurface,
tint = MaterialTheme.colorScheme.onSurface,
)
}
DropdownMenu(
@ -52,10 +55,11 @@ fun OutlinedSpinner(
expanded = false
onSelected(index)
},
content = {
text = {
Text(
text = item,
style = MaterialTheme.typography.body2,
style = MaterialTheme.typography.bodyMedium,
color = MaterialTheme.colorScheme.onSurface,
)
},
)

@ -8,9 +8,9 @@ import androidx.compose.foundation.layout.width
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.BasicTextField
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.MaterialTheme
import androidx.compose.material.TextFieldDefaults
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.TextFieldDefaults
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
@ -26,7 +26,7 @@ import org.tasks.extensions.formatNumber
import org.tasks.extensions.parseInteger
import java.util.Locale
@OptIn(ExperimentalMaterialApi::class)
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun OutlinedNumberInput(
number: Int,
@ -52,8 +52,8 @@ fun OutlinedNumberInput(
?: 0
onTextChanged(newValue)
},
textStyle = MaterialTheme.typography.body1.copy(
color = MaterialTheme.colors.onSurface,
textStyle = MaterialTheme.typography.bodyLarge.copy(
color = MaterialTheme.colorScheme.onSurface,
textAlign = TextAlign.Center,
),
modifier = Modifier
@ -70,12 +70,12 @@ fun OutlinedNumberInput(
.width(60.dp)
.height(45.dp)
.fillMaxWidth(),
cursorBrush = SolidColor(MaterialTheme.colors.onBackground),
cursorBrush = SolidColor(MaterialTheme.colorScheme.onSurface),
interactionSource = interactionSource,
singleLine = true,
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
) {
TextFieldDefaults.TextFieldDecorationBox(
TextFieldDefaults.DecorationBox(
value = number.toString(),
innerTextField = it,
singleLine = true,

@ -11,11 +11,10 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.MaterialTheme
import androidx.compose.material.MaterialTheme.colors
import androidx.compose.material.Text
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@ -37,6 +36,7 @@ import org.tasks.data.entity.CaldavCalendar.Companion.INVITE_NO_RESPONSE
import org.tasks.data.entity.CaldavCalendar.Companion.INVITE_UNKNOWN
import org.tasks.data.entity.Principal
import org.tasks.data.entity.PrincipalAccess
import org.tasks.themes.TasksTheme
private val principals = listOf(
PrincipalWithAccess(
@ -52,14 +52,14 @@ private val principals = listOf(
@Preview(showBackground = true)
@Preview(showBackground = true, backgroundColor = 0x202124, uiMode = UI_MODE_NIGHT_YES)
@Composable
private fun Owner() = MaterialTheme {
private fun Owner() = TasksTheme {
ListSettingsComposables.PrincipalList(principals) {}
}
@Preview(showBackground = true)
@Preview(showBackground = true, backgroundColor = 0x202124, uiMode = UI_MODE_NIGHT_YES)
@Composable
private fun NotOwner() = MaterialTheme {
private fun NotOwner() = TasksTheme {
ListSettingsComposables.PrincipalList(principals, null)
}
@ -79,8 +79,8 @@ object ListSettingsComposables {
) {
Text(
stringResource(R.string.list_members),
style = MaterialTheme.typography.h6,
color = colors.onBackground
style = MaterialTheme.typography.titleLarge,
color = MaterialTheme.colorScheme.onSurface,
)
Spacer(Modifier.height(HALF_KEYLINE))
principals.forEach {
@ -108,7 +108,7 @@ object ListSettingsComposables {
Icon(
painter = painterResource(R.drawable.ic_outline_perm_identity_24px),
contentDescription = null,
tint = colors.onBackground,
tint = MaterialTheme.colorScheme.onSurface,
modifier = Modifier
.padding(end = KEYLINE_FIRST)
.alpha(ICON_ALPHA),
@ -121,8 +121,8 @@ object ListSettingsComposables {
Column {
Text(
principal.name,
style = MaterialTheme.typography.body1,
color = colors.onBackground,
style = MaterialTheme.typography.bodyLarge,
color = MaterialTheme.colorScheme.onSurface,
)
if (principal.inviteStatus != INVITE_ACCEPTED) {
Text(
@ -135,10 +135,10 @@ object ListSettingsComposables {
R.string.invite_invalid
else -> throw IllegalStateException()
}),
style = MaterialTheme.typography.body2,
style = MaterialTheme.typography.bodyMedium,
color = when (principal.inviteStatus) {
INVITE_DECLINED, INVITE_INVALID -> colorResource(R.color.overdue)
else -> colors.onBackground
else -> MaterialTheme.colorScheme.onSurface
},
)
}
@ -155,7 +155,7 @@ object ListSettingsComposables {
Icon(
painter = painterResource(R.drawable.ic_outline_clear_24px),
contentDescription = null,
tint = colors.onBackground,
tint = MaterialTheme.colorScheme.onSurface,
modifier = Modifier.alpha(ICON_ALPHA)
)
}

@ -5,8 +5,8 @@ import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
@ -18,8 +18,8 @@ import androidx.compose.ui.res.colorResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.android.material.composethemeadapter.MdcTheme
import org.tasks.R
import org.tasks.themes.TasksTheme
@Composable
fun ServerSelector(selected: Int, onSelected: (Int) -> Unit) {
@ -29,7 +29,7 @@ fun ServerSelector(selected: Int, onSelected: (Int) -> Unit) {
.clickable { expanded = !expanded }) {
Text(
text = stringResource(id = R.string.caldav_server_type),
style = MaterialTheme.typography.caption.copy(
style = MaterialTheme.typography.bodySmall.copy(
color = colorResource(id = R.color.text_secondary)
),
)
@ -47,7 +47,7 @@ fun ServerSelector(selected: Int, onSelected: (Int) -> Unit) {
setExpanded = { expanded = it },
modifier = Modifier
.padding(vertical = 6.dp)
.fillMaxWidth()
.fillMaxWidth(),
)
}
}
@ -56,6 +56,6 @@ fun ServerSelector(selected: Int, onSelected: (Int) -> Unit) {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
fun ServerSelectorPreview() =
MdcTheme {
TasksTheme {
ServerSelector(1) {}
}

@ -5,15 +5,14 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.AlertDialog
import androidx.compose.material.Icon
import androidx.compose.material.MaterialTheme
import androidx.compose.material.OutlinedTextField
import androidx.compose.material.Text
import androidx.compose.material.darkColors
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Email
import androidx.compose.material.icons.outlined.Person
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedTextField
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.mutableStateOf
@ -27,28 +26,29 @@ import org.tasks.R
import org.tasks.compose.Constants.TextButton
import org.tasks.compose.Constants.textFieldColors
import org.tasks.compose.ShareInvite.ShareInvite
import org.tasks.themes.TasksTheme
@Preview(showBackground = true, backgroundColor = 0xFFFFFF)
@Composable
private fun Invite() = MaterialTheme {
private fun Invite() = TasksTheme {
ShareInvite(true, remember { mutableStateOf("") })
}
@Preview(showBackground = true, backgroundColor = 0x202124)
@Composable
private fun InviteDark() = MaterialTheme(darkColors()) {
private fun InviteDark() = TasksTheme(useDarkTheme = true) {
ShareInvite(false, remember { mutableStateOf("") })
}
@Preview(showBackground = true, backgroundColor = 0xFFFFFF)
@Composable
private fun InviteFilled() = MaterialTheme {
private fun InviteFilled() = TasksTheme {
ShareInvite(true, remember { mutableStateOf("user@example.com") })
}
@Preview(showBackground = true, backgroundColor = 0x202124)
@Composable
private fun InviteDarkFilled() = MaterialTheme(darkColors()) {
private fun InviteDarkFilled() = TasksTheme(useDarkTheme = true) {
ShareInvite(false, remember { mutableStateOf("user@example.com") })
}
@ -84,14 +84,20 @@ object ShareInvite {
Column(modifier = Modifier.fillMaxWidth()) {
Text(
stringResource(R.string.share_list),
style = MaterialTheme.typography.h6,
style = MaterialTheme.typography.titleLarge,
color = MaterialTheme.colorScheme.onSurface,
)
Spacer(Modifier.height(Constants.KEYLINE_FIRST))
val label = stringResource(if (email) R.string.email else R.string.user)
OutlinedTextField(
modifier = Modifier.fillMaxWidth(),
value = text.value,
label = { Text(label) },
label = {
Text(
text = label,
color = MaterialTheme.colorScheme.onSurface,
)
},
keyboardOptions = KeyboardOptions(
keyboardType = if (email) KeyboardType.Email else KeyboardType.Text
),
@ -102,7 +108,7 @@ object ShareInvite {
contentDescription = label
)
},
textStyle = MaterialTheme.typography.body1,
textStyle = MaterialTheme.typography.bodyLarge,
colors = textFieldColors(),
)
}

@ -2,21 +2,26 @@ package org.tasks.compose
import android.content.res.Configuration
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
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.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.ContentAlpha
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material.TextButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.android.material.composethemeadapter.MdcTheme
import org.tasks.R
import org.tasks.auth.SignInActivity
import org.tasks.themes.TasksTheme
@Composable
fun SignInDialog(
@ -27,12 +32,13 @@ fun SignInDialog(
Column(
modifier = Modifier
.verticalScroll(rememberScrollState())
.background(MaterialTheme.colors.surface)
.background(MaterialTheme.colorScheme.surface)
) {
Text(
text = stringResource(id = R.string.sign_in_to_tasks),
style = MaterialTheme.typography.h6,
style = MaterialTheme.typography.titleLarge,
modifier = Modifier.padding(16.dp),
color = MaterialTheme.colorScheme.onSurface,
)
SyncAccount(
title = R.string.sign_in_with_google,
@ -44,7 +50,7 @@ fun SignInDialog(
title = R.string.sign_in_with_github,
description = R.string.github_sponsors,
icon = R.drawable.ic_octocat,
tint = MaterialTheme.colors.onSurface.copy(
tint = MaterialTheme.colorScheme.onSurface.copy(
alpha = ContentAlpha.medium
),
onClick = { selected(SignInActivity.Platform.GITHUB) }
@ -55,11 +61,17 @@ fun SignInDialog(
.padding(16.dp)
) {
TextButton(onClick = help) {
Text(text = stringResource(id = R.string.help))
Text(
text = stringResource(id = R.string.help),
color = MaterialTheme.colorScheme.onSurface,
)
}
Spacer(modifier = Modifier.weight(1f))
TextButton(onClick = cancel) {
Text(text = stringResource(id = R.string.cancel))
Text(
text = stringResource(id = R.string.cancel),
color = MaterialTheme.colorScheme.onSurface,
)
}
}
}
@ -69,15 +81,17 @@ fun SignInDialog(
fun ConsentDialog(
agree: (Boolean) -> Unit,
) {
Column(Modifier.background(MaterialTheme.colors.surface)) {
Column(Modifier.background(MaterialTheme.colorScheme.surface)) {
Text(
text = stringResource(id = R.string.sign_in_to_tasks),
style = MaterialTheme.typography.h6,
style = MaterialTheme.typography.titleLarge,
modifier = Modifier.padding(16.dp),
color = MaterialTheme.colorScheme.onSurface,
)
Text(
text = stringResource(id = R.string.sign_in_to_tasks_disclosure),
modifier = Modifier.padding(horizontal = 16.dp),
color = MaterialTheme.colorScheme.onSurface,
)
Row(
horizontalArrangement = Arrangement.End,
@ -86,10 +100,16 @@ fun ConsentDialog(
.padding(16.dp),
) {
TextButton(onClick = { agree(false) }) {
Text(text = stringResource(id = R.string.consent_deny))
Text(
text = stringResource(id = R.string.consent_deny),
color = MaterialTheme.colorScheme.onSurface,
)
}
TextButton(onClick = { agree(true) }) {
Text(text = stringResource(id = R.string.consent_agree))
Text(
text = stringResource(id = R.string.consent_agree),
color = MaterialTheme.colorScheme.onSurface,
)
}
}
}
@ -99,7 +119,7 @@ fun ConsentDialog(
@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun SignInDialogPreview() {
MdcTheme {
TasksTheme {
SignInDialog(selected = {}, help = {}, cancel = {})
}
}
@ -108,7 +128,7 @@ fun SignInDialogPreview() {
@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun DisclosurePreview() {
MdcTheme {
TasksTheme {
ConsentDialog(agree = {})
}
}

@ -1,12 +1,13 @@
package org.tasks.compose
import androidx.compose.foundation.layout.Row
import androidx.compose.material.DropdownMenu
import androidx.compose.material.DropdownMenuItem
import androidx.compose.material.Icon
import androidx.compose.material.Text
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.ArrowDropDown
import androidx.compose.material3.DropdownMenu
import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
@ -23,17 +24,28 @@ fun <T> Spinner(
val selectedIndex = values.indexOf(selected)
val selectedOption = options[selectedIndex]
Row(modifier = modifier) {
Text(text = selectedOption)
Icon(imageVector = Icons.Outlined.ArrowDropDown, contentDescription = "")
Text(
text = selectedOption,
color = MaterialTheme.colorScheme.onSurface,
)
Icon(
imageVector = Icons.Outlined.ArrowDropDown,
contentDescription = "",
tint = MaterialTheme.colorScheme.onSurface,
)
DropdownMenu(expanded = expanded, onDismissRequest = {
setExpanded(false)
}) {
options.forEach {
DropdownMenuItem(onClick = {
onSelected(values[options.indexOf(it)])
}) {
Text(text = it)
}
DropdownMenuItem(
text = {
Text(
text = it,
color = MaterialTheme.colorScheme.onSurface,
)
},
onClick = { onSelected(values[options.indexOf(it)]) }
)
}
}
}

@ -3,11 +3,34 @@ package org.tasks.compose
import android.content.res.Configuration.UI_MODE_NIGHT_YES
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.requiredSize
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.*
import androidx.compose.runtime.*
import androidx.compose.material3.Badge
import androidx.compose.material3.BadgedBox
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Divider
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedButton
import androidx.compose.material3.Slider
import androidx.compose.material3.SliderDefaults
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
@ -22,12 +45,12 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.google.android.material.composethemeadapter.MdcTheme
import org.tasks.R
import org.tasks.compose.Constants.HALF_KEYLINE
import org.tasks.compose.Constants.KEYLINE_FIRST
import org.tasks.compose.PurchaseText.PurchaseText
import org.tasks.extensions.Context.openUri
import org.tasks.themes.TasksTheme
object PurchaseText {
private const val POPPER = "\uD83C\uDF89"
@ -152,9 +175,9 @@ object PurchaseText {
val context = LocalContext.current
OutlinedButton(
onClick = { context.openUri(R.string.url_sponsor) },
colors = ButtonDefaults.textButtonColors(
backgroundColor = MaterialTheme.colors.secondary,
contentColor = MaterialTheme.colors.onSecondary
colors = ButtonDefaults.outlinedButtonColors(
containerColor = MaterialTheme.colorScheme.secondary,
contentColor = MaterialTheme.colorScheme.onSecondary
),
modifier = Modifier.padding(KEYLINE_FIRST, 0.dp, KEYLINE_FIRST, KEYLINE_FIRST)
) {
@ -165,8 +188,8 @@ object PurchaseText {
)
Text(
text = stringResource(R.string.github_sponsor),
color = MaterialTheme.colors.onSecondary,
style = MaterialTheme.typography.body1
color = MaterialTheme.colorScheme.onSecondary,
style = MaterialTheme.typography.bodyLarge
)
}
}
@ -177,8 +200,8 @@ object PurchaseText {
Text(
modifier = Modifier.padding(KEYLINE_FIRST, KEYLINE_FIRST, KEYLINE_FIRST, 0.dp),
text = stringResource(resId),
color = MaterialTheme.colors.onBackground,
style = MaterialTheme.typography.body1,
color = MaterialTheme.colorScheme.onSurface,
style = MaterialTheme.typography.bodyLarge,
textAlign = TextAlign.Center,
)
}
@ -196,7 +219,7 @@ object PurchaseText {
modifier = Modifier.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally,
) {
Divider(color = MaterialTheme.colors.onSurface, thickness = 0.25.dp)
Divider(color = MaterialTheme.colorScheme.onSurface, thickness = 0.25.dp)
Spacer(Modifier.height(KEYLINE_FIRST))
if (nameYourPrice.value) {
NameYourPrice(sliderPosition, subscribe)
@ -210,8 +233,8 @@ object PurchaseText {
pagerState.currentPage = 0
},
colors = ButtonDefaults.textButtonColors(
backgroundColor = if (solidButton)
MaterialTheme.colors.secondary
containerColor = if (solidButton)
MaterialTheme.colorScheme.primary
else
Color.Transparent
)
@ -229,20 +252,20 @@ object PurchaseText {
R.string.more_options
),
color = if (solidButton)
MaterialTheme.colors.onSecondary
MaterialTheme.colorScheme.onSecondary
else
MaterialTheme.colors.secondary,
style = MaterialTheme.typography.body1
MaterialTheme.colorScheme.onSurface,
style = MaterialTheme.typography.bodyLarge
)
}
}
Text(
text = stringResource(R.string.pro_free_trial),
style = MaterialTheme.typography.caption,
style = MaterialTheme.typography.bodySmall,
modifier = Modifier
.fillMaxWidth(.75f)
.padding(KEYLINE_FIRST),
color = MaterialTheme.colors.onBackground,
color = MaterialTheme.colorScheme.onSurface,
textAlign = TextAlign.Center,
)
}
@ -281,7 +304,7 @@ object PurchaseText {
modifier = Modifier
.fillMaxWidth()
.padding(0.dp, 4.dp),
color = MaterialTheme.colors.onBackground,
color = MaterialTheme.colorScheme.onBackground,
style = TextStyle(
fontWeight = FontWeight.Bold,
fontSize = 14.sp,
@ -292,7 +315,7 @@ object PurchaseText {
Text(
text = stringResource(if (disabled) R.string.account_not_included else feature.description),
modifier = Modifier.fillMaxWidth(),
color = if (disabled) Color.Red else MaterialTheme.colors.onBackground,
color = if (disabled) Color.Red else MaterialTheme.colorScheme.onBackground,
style = TextStyle(
fontWeight = if (disabled) FontWeight.Bold else FontWeight.Normal,
fontSize = 12.sp,
@ -343,7 +366,7 @@ object PurchaseText {
Button(
onClick = { onClick(price, monthly) },
colors = ButtonDefaults.textButtonColors(
backgroundColor = MaterialTheme.colors.secondary
containerColor = MaterialTheme.colorScheme.secondary
)
) {
Text(
@ -351,14 +374,14 @@ object PurchaseText {
if (monthly) R.string.price_per_month else R.string.price_per_year,
price
),
color = MaterialTheme.colors.onSecondary,
style = MaterialTheme.typography.body1
color = MaterialTheme.colorScheme.onSecondary,
style = MaterialTheme.typography.bodyLarge
)
}
Text(
text = popperText,
color = MaterialTheme.colors.onSurface,
style = MaterialTheme.typography.caption,
color = MaterialTheme.colorScheme.onSurface,
style = MaterialTheme.typography.bodySmall,
)
}
}
@ -377,8 +400,8 @@ object PurchaseText {
valueRange = 1f..25f,
steps = 25,
colors = SliderDefaults.colors(
thumbColor = MaterialTheme.colors.secondary,
activeTrackColor = MaterialTheme.colors.secondary,
thumbColor = MaterialTheme.colorScheme.secondary,
activeTrackColor = MaterialTheme.colorScheme.secondary,
inactiveTrackColor = colorResource(R.color.text_tertiary),
activeTickColor = Color.Transparent,
inactiveTickColor = Color.Transparent
@ -415,7 +438,7 @@ object PurchaseText {
@Preview(showBackground = true, uiMode = UI_MODE_NIGHT_YES)
@Composable
private fun PurchaseDialogPreview() {
MdcTheme {
TasksTheme {
PurchaseText { _, _ -> }
}
}
@ -424,7 +447,7 @@ private fun PurchaseDialogPreview() {
@Preview(showBackground = true, uiMode = UI_MODE_NIGHT_YES)
@Composable
private fun PurchaseDialogPreviewSolid() {
MdcTheme {
TasksTheme {
PurchaseText(solidButton = true) { _, _ -> }
}
}
@ -433,7 +456,7 @@ private fun PurchaseDialogPreviewSolid() {
@Preview(showBackground = true, uiMode = UI_MODE_NIGHT_YES)
@Composable
private fun PurchaseDialogPreviewBadge() {
MdcTheme {
TasksTheme {
PurchaseText(badge = true) { _, _ -> }
}
}

@ -3,10 +3,14 @@ package org.tasks.compose
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.material.Icon
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@ -39,11 +43,13 @@ fun SyncAccount(
Column {
Text(
text = stringResource(id = title),
style = MaterialTheme.typography.body1,
style = MaterialTheme.typography.bodyLarge,
color = MaterialTheme.colorScheme.onSurface,
)
Text(
text = stringResource(id = description),
style = MaterialTheme.typography.body2,
style = MaterialTheme.typography.bodyMedium,
color = MaterialTheme.colorScheme.onSurface,
)
}
}

@ -2,7 +2,8 @@ package org.tasks.compose
import androidx.annotation.DrawableRes
import androidx.compose.material.ContentAlpha
import androidx.compose.material.Icon
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
@ -14,5 +15,6 @@ fun TaskEditIcon(@DrawableRes id: Int, modifier: Modifier = Modifier) {
painter = painterResource(id = id),
contentDescription = null,
modifier = modifier.alpha(ContentAlpha.medium),
tint = MaterialTheme.colorScheme.onSurface,
)
}

@ -22,8 +22,6 @@ import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material.ContentAlpha
import androidx.compose.material.IconButton
import androidx.compose.material.MaterialTheme
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Add
import androidx.compose.material.icons.outlined.ExpandMore
@ -32,6 +30,8 @@ import androidx.compose.material.icons.outlined.PermIdentity
import androidx.compose.material.icons.outlined.SyncProblem
import androidx.compose.material3.Divider
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
@ -45,7 +45,6 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import com.google.android.material.composethemeadapter.MdcTheme
import com.todoroo.astrid.api.FilterImpl
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.persistentListOf
@ -53,6 +52,7 @@ import org.tasks.R
import org.tasks.Tasks.Companion.IS_GENERIC
import org.tasks.extensions.formatNumber
import org.tasks.filters.NavigationDrawerSubheader
import org.tasks.themes.TasksTheme
@Composable
fun TaskListDrawer(
@ -138,7 +138,7 @@ private fun FilterItem(
modifier = Modifier
.background(
if (item.selected)
MaterialTheme.colors.onSurface.copy(alpha = .1f)
MaterialTheme.colorScheme.onSurface.copy(alpha = .1f)
else
Color.Transparent
)
@ -151,7 +151,7 @@ private fun FilterItem(
Spacer(modifier = Modifier.width(16.dp))
Text(
text = item.title,
color = MaterialTheme.colors.onSurface,
color = MaterialTheme.colorScheme.onSurface,
modifier = Modifier.weight(1f),
)
if (item.shareCount > 0) {
@ -161,7 +161,7 @@ private fun FilterItem(
else -> Icons.Outlined.PeopleOutline
},
contentDescription = null,
tint = MaterialTheme.colors.onSurface.copy(
tint = MaterialTheme.colorScheme.onSurface.copy(
alpha = ContentAlpha.medium
),
)
@ -174,7 +174,7 @@ private fun FilterItem(
val locale = LocalConfiguration.current.locales[0]
Text(
text = locale.formatNumber(item.count),
color = MaterialTheme.colors.onSurface,
color = MaterialTheme.colorScheme.onSurface,
)
}
}
@ -192,7 +192,7 @@ private fun MenuAction(
Spacer(modifier = Modifier.width(16.dp))
Text(
text = stringResource(id = title),
color = MaterialTheme.colors.onSurface,
color = MaterialTheme.colorScheme.onSurface,
modifier = Modifier.weight(1f),
)
}
@ -205,7 +205,7 @@ private fun DrawerIcon(icon: Int, color: Int = 0) {
painter = painterResource(id = icon),
contentDescription = null,
tint = when (color) {
0 -> MaterialTheme.colors.onSurface
0 -> MaterialTheme.colorScheme.onSurface
else -> Color(color)
}.copy(alpha = ContentAlpha.medium)
)
@ -228,7 +228,7 @@ private fun HeaderItem(
Text(
modifier = Modifier.weight(1f),
text = item.title,
color = MaterialTheme.colors.onSurface,
color = MaterialTheme.colorScheme.onSurface,
)
IconButton(onClick = toggleCollapsed) {
val rotation by animateFloatAsState(
@ -240,7 +240,7 @@ private fun HeaderItem(
modifier = Modifier.rotate(rotation),
imageVector = Icons.Outlined.ExpandMore,
contentDescription = null,
tint = MaterialTheme.colors.onSurface,
tint = MaterialTheme.colorScheme.onSurface,
)
}
if (canAdd) {
@ -248,7 +248,7 @@ private fun HeaderItem(
Icon(
imageVector = Icons.Outlined.Add,
contentDescription = null,
tint = MaterialTheme.colors.onSurface,
tint = MaterialTheme.colorScheme.onSurface,
)
}
}
@ -257,7 +257,7 @@ private fun HeaderItem(
Icon(
imageVector = Icons.Outlined.SyncProblem,
contentDescription = null,
tint = MaterialTheme.colors.error,
tint = MaterialTheme.colorScheme.error,
)
}
}
@ -287,7 +287,7 @@ private fun MenuRow(
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
fun MenuPreview() {
MdcTheme {
TasksTheme {
TaskListDrawer(
filters = persistentListOf(
DrawerItem.Filter(

@ -3,7 +3,7 @@ package org.tasks.compose.drawer
import android.content.Intent
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContracts
import androidx.compose.material.MaterialTheme
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
@ -75,7 +75,7 @@ fun TasksMenu(
}
ModalBottomSheet(
sheetState = sheetState,
containerColor = MaterialTheme.colors.surface,
containerColor = MaterialTheme.colorScheme.surface,
onDismissRequest = { dismiss() }
) {
val scope = rememberCoroutineScope()

@ -8,8 +8,8 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
@ -22,7 +22,6 @@ import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewmodel.compose.viewModel
import com.google.accompanist.permissions.ExperimentalPermissionsApi
import com.google.accompanist.permissions.PermissionStatus
import com.google.android.material.composethemeadapter.MdcTheme
import com.todoroo.astrid.ui.ReminderControlSetViewModel
import org.tasks.R
import org.tasks.compose.AddAlarmDialog
@ -33,6 +32,7 @@ import org.tasks.compose.TaskEditRow
import org.tasks.compose.collectAsStateLifecycleAware
import org.tasks.data.entity.Alarm
import org.tasks.reminders.AlarmToString
import org.tasks.themes.TasksTheme
import java.util.Locale
@OptIn(ExperimentalPermissionsApi::class, ExperimentalComposeUiApi::class)
@ -85,7 +85,7 @@ fun AlarmRow(
)
Text(
text = stringResource(id = R.string.enable_reminders_description),
style = MaterialTheme.typography.caption,
style = MaterialTheme.typography.bodySmall,
color = colorResource(id = R.color.red_500),
)
Spacer(modifier = Modifier.height(20.dp))
@ -163,12 +163,13 @@ fun Alarms(
else -> R.string.ring_once
}
),
style = MaterialTheme.typography.body1.copy(
style = MaterialTheme.typography.bodyLarge.copy(
textDecoration = TextDecoration.Underline
),
modifier = Modifier
.padding(vertical = 12.dp, horizontal = 16.dp)
.clickable(onClick = openRingType)
.clickable(onClick = openRingType),
color = MaterialTheme.colorScheme.onSurface,
)
}
}
@ -192,6 +193,7 @@ private fun AlarmRow(
modifier = Modifier
.padding(vertical = 12.dp)
.weight(weight = 1f),
color = MaterialTheme.colorScheme.onSurface,
)
ClearButton(onClick = remove)
}
@ -202,7 +204,7 @@ private fun AlarmRow(
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun NoAlarms() {
MdcTheme {
TasksTheme {
AlarmRow(
alarms = emptyList(),
ringMode = 0,
@ -222,7 +224,7 @@ fun NoAlarms() {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun PermissionDenied() {
MdcTheme {
TasksTheme {
AlarmRow(
alarms = emptyList(),
ringMode = 0,

@ -3,15 +3,31 @@ package org.tasks.compose.edit
import android.content.res.Configuration
import androidx.compose.foundation.border
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxScope
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.ContentAlpha
import androidx.compose.material.Icon
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.*
import androidx.compose.runtime.*
import androidx.compose.material.icons.outlined.Add
import androidx.compose.material.icons.outlined.Cancel
import androidx.compose.material.icons.outlined.Description
import androidx.compose.material.icons.outlined.Image
import androidx.compose.material.icons.outlined.Movie
import androidx.compose.material.icons.outlined.MusicNote
import androidx.compose.material.icons.outlined.PlayCircle
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
@ -34,13 +50,13 @@ import coil.decode.VideoFrameDecoder
import coil.request.CachePolicy
import coil.request.ImageRequest
import com.google.accompanist.flowlayout.FlowRow
import com.google.android.material.composethemeadapter.MdcTheme
import com.todoroo.andlib.utility.AndroidUtilities
import org.tasks.R
import org.tasks.compose.DisabledText
import org.tasks.compose.TaskEditRow
import org.tasks.data.entity.TaskAttachment
import org.tasks.files.FileHelper
import org.tasks.themes.TasksTheme
private val SIZE = 128.dp
@ -136,7 +152,7 @@ fun AttachmentRow(
.clickable { addAttachment() }
.border(
width = 1.dp,
color = MaterialTheme.colors.onSurface.copy(alpha = ContentAlpha.medium),
color = MaterialTheme.colorScheme.onSurface.copy(alpha = ContentAlpha.medium),
shape = RoundedCornerShape(8.dp),
),
) {
@ -146,7 +162,7 @@ fun AttachmentRow(
modifier = Modifier
.size(48.dp)
.align(Alignment.Center),
tint = MaterialTheme.colors.onSurface.copy(
tint = MaterialTheme.colorScheme.onSurface.copy(
alpha = ContentAlpha.medium
),
)
@ -178,7 +194,7 @@ fun NoThumbnail(
.clickable { open() }
.border(
width = 1.dp,
color = MaterialTheme.colors.onSurface.copy(alpha = ContentAlpha.medium),
color = MaterialTheme.colorScheme.onSurface.copy(alpha = ContentAlpha.medium),
shape = RoundedCornerShape(8.dp),
),
) {
@ -194,15 +210,15 @@ fun NoThumbnail(
modifier = Modifier
.align(Alignment.CenterHorizontally)
.alpha(ContentAlpha.medium),
tint = MaterialTheme.colors.onSurface.copy(
tint = MaterialTheme.colorScheme.onSurface.copy(
alpha = ContentAlpha.medium
),
)
Text(
text = filename,
style = MaterialTheme.typography.caption.copy(
style = MaterialTheme.typography.bodySmall.copy(
textAlign = TextAlign.Center,
color = MaterialTheme.colors.onSurface,
color = MaterialTheme.colorScheme.onSurface,
),
maxLines = 2,
overflow = TextOverflow.Ellipsis,
@ -213,7 +229,7 @@ fun NoThumbnail(
}
DeleteAttachment(
onClick = { delete() },
color = MaterialTheme.colors.onSurface,
color = MaterialTheme.colorScheme.onSurface,
)
}
}
@ -239,7 +255,7 @@ fun BoxScope.DeleteAttachment(
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun NoAttachments() {
MdcTheme {
TasksTheme {
AttachmentRow(
attachments = emptyList(),
openAttachment = {},
@ -253,7 +269,7 @@ fun NoAttachments() {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun AttachmentPreview() {
MdcTheme {
TasksTheme {
AttachmentRow(
attachments = listOf(
TaskAttachment(

@ -4,21 +4,22 @@ import android.content.res.Configuration
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.material.ContentAlpha
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.Text
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Delete
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.android.material.composethemeadapter.MdcTheme
import org.tasks.R
import org.tasks.compose.DisabledText
import org.tasks.compose.TaskEditRow
import org.tasks.themes.TasksTheme
@Composable
fun CalendarRow(
@ -36,7 +37,8 @@ fun CalendarRow(
text = stringResource(id = R.string.gcal_TEA_showCalendar_label),
modifier = Modifier
.weight(1f)
.padding(vertical = 20.dp)
.padding(vertical = 20.dp),
color = MaterialTheme.colorScheme.onSurface,
)
IconButton(
onClick = { clear() },
@ -53,6 +55,7 @@ fun CalendarRow(
Text(
text = selectedCalendar,
modifier = Modifier.padding(vertical = 20.dp),
color = MaterialTheme.colorScheme.onSurface,
)
} else {
DisabledText(
@ -69,7 +72,7 @@ fun CalendarRow(
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun NoCalendar() {
MdcTheme {
TasksTheme {
CalendarRow(eventUri = null, selectedCalendar = null, onClick = {}, clear = {})
}
}
@ -78,7 +81,7 @@ fun NoCalendar() {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun NewCalendar() {
MdcTheme {
TasksTheme {
CalendarRow(eventUri = null, selectedCalendar = "Personal", onClick = {}, clear = {})
}
}
@ -87,7 +90,7 @@ fun NewCalendar() {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun ExistingCalendar() {
MdcTheme {
TasksTheme {
CalendarRow(eventUri = "abcd", selectedCalendar = null, onClick = {}, clear = {})
}
}

@ -7,8 +7,8 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@ -62,7 +62,10 @@ fun Comment(
) {
comment.message?.let {
// TODO: linkify text
Text(text = it)
Text(
text = it,
color = MaterialTheme.colorScheme.onSurface,
)
}
comment.pictureUri?.let {
AsyncImage(
@ -73,7 +76,8 @@ fun Comment(
}
Text(
text = DateUtilities.getLongDateStringWithTime(comment.created!!, Locale.getDefault()),
style = MaterialTheme.typography.caption,
style = MaterialTheme.typography.bodySmall,
color = MaterialTheme.colorScheme.onSurface,
)
}
DeleteButton(

@ -14,12 +14,12 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.viewinterop.AndroidView
import androidx.core.widget.addTextChangedListener
import com.google.android.material.composethemeadapter.MdcTheme
import com.todoroo.andlib.utility.AndroidUtilities
import org.tasks.R
import org.tasks.compose.TaskEditRow
import org.tasks.dialogs.Linkify
import org.tasks.markdown.MarkdownProvider
import org.tasks.themes.TasksTheme
@Composable
fun DescriptionRow(
@ -85,7 +85,7 @@ fun DescriptionRow(
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun EmptyDescriptionPreview() {
MdcTheme {
TasksTheme {
DescriptionRow(
text = null,
onChanged = {},
@ -100,7 +100,7 @@ fun EmptyDescriptionPreview() {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun DescriptionPreview() {
MdcTheme {
TasksTheme {
DescriptionRow(
text = """
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

@ -2,8 +2,8 @@ package org.tasks.compose.edit
import android.content.res.Configuration
import androidx.compose.foundation.layout.padding
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
@ -11,10 +11,10 @@ import androidx.compose.ui.res.colorResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.android.material.composethemeadapter.MdcTheme
import org.tasks.R
import org.tasks.compose.DisabledText
import org.tasks.compose.TaskEditRow
import org.tasks.themes.TasksTheme
@Composable
fun DueDateRow(
@ -47,7 +47,7 @@ fun DueDate(dueDate: String?, overdue: Boolean) {
color = if (overdue) {
colorResource(id = R.color.overdue)
} else {
MaterialTheme.colors.onSurface
MaterialTheme.colorScheme.onSurface
},
modifier = Modifier.padding(top = 20.dp, bottom = 20.dp, end = 16.dp)
)
@ -59,7 +59,7 @@ fun DueDate(dueDate: String?, overdue: Boolean) {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun DueDatePreview() {
MdcTheme {
TasksTheme {
DueDateRow(
dueDate = "Today",
overdue = false,
@ -72,7 +72,7 @@ fun DueDatePreview() {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun NoDueDatePreview() {
MdcTheme {
TasksTheme {
DueDateRow(
dueDate = null,
overdue = false,

@ -3,18 +3,19 @@ package org.tasks.compose.edit
import android.content.res.Configuration
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.material.Text
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.android.material.composethemeadapter.MdcTheme
import org.tasks.R
import org.tasks.compose.TaskEditRow
import org.tasks.themes.TasksTheme
import java.text.SimpleDateFormat
import java.util.*
import java.util.Locale
@Composable
fun InfoRow(
@ -33,7 +34,8 @@ fun InfoRow(
text = stringResource(
id = R.string.sort_created_group,
formatter.format(it)
)
),
color = MaterialTheme.colorScheme.onSurface,
)
}
modificationDate?.let {
@ -41,7 +43,8 @@ fun InfoRow(
text = stringResource(
id = R.string.sort_modified_group,
formatter.format(it)
)
),
color = MaterialTheme.colorScheme.onSurface,
)
}
completionDate?.takeIf { it > 0 }?.let {
@ -49,7 +52,8 @@ fun InfoRow(
text = stringResource(
id = R.string.sort_completion_group,
formatter.format(it)
)
),
color = MaterialTheme.colorScheme.onSurface,
)
}
}
@ -62,7 +66,7 @@ fun InfoRow(
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun InfoPreview() {
MdcTheme {
TasksTheme {
InfoRow(
creationDate = 1658727180000,
modificationDate = 1658813557000,

@ -7,13 +7,13 @@ import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.android.material.composethemeadapter.MdcTheme
import com.todoroo.astrid.api.Filter
import com.todoroo.astrid.api.FilterImpl
import org.tasks.R
import org.tasks.compose.ChipGroup
import org.tasks.compose.FilterChip
import org.tasks.compose.TaskEditRow
import org.tasks.themes.TasksTheme
@Composable
fun ListRow(
@ -46,7 +46,7 @@ fun ListRow(
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun ListPreview() {
MdcTheme {
TasksTheme {
ListRow(
list = FilterImpl("Default list", ""),
colorProvider = { -769226 },

@ -5,19 +5,19 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.material.ContentAlpha
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.Text
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Notifications
import androidx.compose.material.icons.outlined.NotificationsOff
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.android.material.composethemeadapter.MdcTheme
import org.tasks.R
import org.tasks.compose.DisabledText
import org.tasks.compose.TaskEditRow
@ -25,6 +25,7 @@ import org.tasks.data.Location
import org.tasks.data.displayName
import org.tasks.data.entity.Geofence
import org.tasks.data.entity.Place
import org.tasks.themes.TasksTheme
@Composable
fun LocationRow(
@ -67,9 +68,15 @@ fun Location(
.weight(1f)
.padding(vertical = 20.dp)
) {
Text(text = name)
Text(
text = name,
color = MaterialTheme.colorScheme.onSurface,
)
address?.takeIf { it.isNotBlank() && it != name }?.let {
Text(text = address)
Text(
text = address,
color = MaterialTheme.colorScheme.onSurface,
)
}
}
IconButton(
@ -84,6 +91,7 @@ fun Location(
},
contentDescription = null,
modifier = Modifier.alpha(ContentAlpha.medium),
tint = MaterialTheme.colorScheme.onSurface,
)
}
}
@ -93,7 +101,7 @@ fun Location(
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun NoLocation() {
MdcTheme {
TasksTheme {
LocationRow(
location = null,
hasPermissions = true,
@ -107,7 +115,7 @@ fun NoLocation() {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun SampleLocation() {
MdcTheme {
TasksTheme {
LocationRow(
location = Location(
Geofence(),

@ -9,12 +9,12 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.LocalMinimumInteractiveComponentEnforcement
import androidx.compose.material.MaterialTheme
import androidx.compose.material.RadioButton
import androidx.compose.material.RadioButtonDefaults
import androidx.compose.material.Text
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.LocalMinimumInteractiveComponentEnforcement
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.RadioButton
import androidx.compose.material3.RadioButtonDefaults
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Alignment
@ -25,11 +25,11 @@ import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.android.material.composethemeadapter.MdcTheme
import org.tasks.data.entity.Task
import org.tasks.R
import org.tasks.compose.TaskEditRow
import org.tasks.data.entity.Task
import org.tasks.themes.ColorProvider.Companion.priorityColor
import org.tasks.themes.TasksTheme
@Composable
fun PriorityRow(
@ -84,15 +84,16 @@ fun PriorityLabeled(
) {
Text(
text = stringResource(id = R.string.TEA_importance_label),
style = MaterialTheme.typography.body1,
modifier = Modifier.padding(end = 16.dp)
style = MaterialTheme.typography.bodyLarge,
modifier = Modifier.padding(end = 16.dp),
color = MaterialTheme.colorScheme.onSurface,
)
Spacer(modifier = Modifier.weight(1f))
Priority(selected = selected, onClick = onClick, desaturate = desaturate)
}
}
@OptIn(ExperimentalMaterialApi::class)
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun RowScope.PriorityButton(
@Task.Priority priority: Int,
@ -129,7 +130,7 @@ fun RowScope.PriorityButton(
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
fun PriorityPreview() {
MdcTheme {
TasksTheme {
PriorityRow(
priority = Task.Priority.MEDIUM,
onChangePriority = {},
@ -142,7 +143,7 @@ fun PriorityPreview() {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
fun PriorityPreviewNoDesaturate() {
MdcTheme {
TasksTheme {
PriorityRow(
priority = Task.Priority.MEDIUM,
onChangePriority = {},
@ -155,7 +156,7 @@ fun PriorityPreviewNoDesaturate() {
@Preview(locale = "de", widthDp = 320, showBackground = true)
@Composable
fun PriorityNarrowWidth() {
MdcTheme {
TasksTheme {
PriorityRow(
priority = Task.Priority.MEDIUM,
onChangePriority = {},

@ -2,22 +2,33 @@ package org.tasks.compose.edit
import android.content.res.Configuration
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.material.DropdownMenu
import androidx.compose.material.DropdownMenuItem
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.runtime.*
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.defaultMinSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.material3.DropdownMenu
import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.android.material.composethemeadapter.MdcTheme
import org.tasks.R
import org.tasks.compose.DisabledText
import org.tasks.compose.TaskEditRow
import org.tasks.themes.TasksTheme
@Composable
fun RepeatRow(
@ -54,10 +65,14 @@ fun Repeat(
text = recurrence,
modifier = Modifier.defaultMinSize(minHeight = 24.dp).padding(end = 16.dp).fillMaxWidth(),
maxLines = Int.MAX_VALUE,
color = MaterialTheme.colorScheme.onSurface,
)
Spacer(modifier = Modifier.height(8.dp))
Row {
Text(text = stringResource(id = R.string.repeats_from))
Text(
text = stringResource(id = R.string.repeats_from),
color = MaterialTheme.colorScheme.onSurface,
)
Spacer(modifier = Modifier.width(4.dp))
var expanded by remember { mutableStateOf(false) }
Text(
@ -67,28 +82,37 @@ fun Repeat(
else
R.string.repeat_type_due
),
style = MaterialTheme.typography.body1.copy(
style = MaterialTheme.typography.bodyLarge.copy(
textDecoration = TextDecoration.Underline,
),
modifier = Modifier.clickable { expanded = true }
modifier = Modifier.clickable { expanded = true },
color = MaterialTheme.colorScheme.onSurface,
)
DropdownMenu(expanded = expanded, onDismissRequest = { expanded = false }) {
DropdownMenuItem(
onClick = {
expanded = false
onRepeatFromChanged(false)
},
text = {
Text(
text = stringResource(id = R.string.repeat_type_due),
color = MaterialTheme.colorScheme.onSurface,
)
}
) {
Text(text = stringResource(id = R.string.repeat_type_due))
}
)
DropdownMenuItem(
onClick = {
expanded = false
onRepeatFromChanged(true)
},
text = {
Text(
text = stringResource(id = R.string.repeat_type_completion),
color = MaterialTheme.colorScheme.onSurface,
)
}
) {
Text(text = stringResource(id = R.string.repeat_type_completion))
}
)
}
}
}
@ -101,7 +125,7 @@ fun Repeat(
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun RepeatPreview() {
MdcTheme {
TasksTheme {
RepeatRow(
recurrence = "Repeats weekly on Mon, Tue, Wed, Thu, Fri",
repeatAfterCompletion = false,
@ -116,7 +140,7 @@ fun RepeatPreview() {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun NoRepeatPreview() {
MdcTheme {
TasksTheme {
RepeatRow(
recurrence = null,
repeatAfterCompletion = false,

@ -4,8 +4,8 @@ import android.content.res.Configuration
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.material.ContentAlpha
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
@ -13,11 +13,11 @@ import androidx.compose.ui.res.colorResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.android.material.composethemeadapter.MdcTheme
import com.todoroo.astrid.ui.StartDateControlSet.Companion.getRelativeDateString
import org.tasks.R
import org.tasks.compose.TaskEditRow
import org.tasks.dialogs.StartDatePicker
import org.tasks.themes.TasksTheme
import org.tasks.time.DateTimeUtils2.currentTimeMillis
@Composable
@ -67,9 +67,9 @@ fun StartDate(
},
color = when {
selectedDay < 0 && !hasDueDate -> colorResource(id = R.color.overdue)
startDate == 0L -> MaterialTheme.colors.onSurface.copy(alpha = ContentAlpha.disabled)
startDate == 0L -> MaterialTheme.colorScheme.onSurface.copy(alpha = ContentAlpha.disabled)
startDate < currentTime -> colorResource(id = R.color.overdue)
else -> MaterialTheme.colors.onSurface
else -> MaterialTheme.colorScheme.onSurface
},
modifier = Modifier
.padding(vertical = 20.dp)
@ -81,7 +81,7 @@ fun StartDate(
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun NoStartDate() {
MdcTheme {
TasksTheme {
StartDateRow(
startDate = 0L,
selectedDay = StartDatePicker.NO_DAY,
@ -98,7 +98,7 @@ fun NoStartDate() {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun FutureStartDate() {
MdcTheme {
TasksTheme {
StartDateRow(
startDate = 1657080392000L,
selectedDay = StartDatePicker.DUE_DATE,
@ -115,7 +115,7 @@ fun FutureStartDate() {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun PastStartDate() {
MdcTheme {
TasksTheme {
StartDateRow(
startDate = 1657080392000L,
selectedDay = StartDatePicker.DUE_TIME,

@ -13,8 +13,8 @@ import androidx.compose.foundation.text.BasicTextField
import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.ContentAlpha
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
@ -33,7 +33,6 @@ import androidx.compose.ui.text.input.KeyboardCapitalization
import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.android.material.composethemeadapter.MdcTheme
import com.todoroo.astrid.api.Filter
import com.todoroo.astrid.api.GtasksFilter
import org.tasks.compose.CheckBox
@ -46,6 +45,7 @@ import org.tasks.data.TaskContainer
import org.tasks.data.entity.Task
import org.tasks.data.isHidden
import org.tasks.tasklist.SectionedDataSource
import org.tasks.themes.TasksTheme
import org.tasks.ui.TaskListViewModel
@Composable
@ -157,7 +157,7 @@ fun NewSubtaskRow(
text = it
subtask.title = it
},
cursorBrush = SolidColor(MaterialTheme.colors.onSurface),
cursorBrush = SolidColor(MaterialTheme.colorScheme.onSurface),
modifier = Modifier
.weight(1f)
.focusable(enabled = true)
@ -165,9 +165,9 @@ fun NewSubtaskRow(
.alpha(if (subtask.isCompleted) ContentAlpha.disabled else ContentAlpha.high)
.align(Alignment.Top)
.padding(top = 12.dp),
textStyle = MaterialTheme.typography.body1.copy(
textStyle = MaterialTheme.typography.bodyLarge.copy(
textDecoration = if (subtask.isCompleted) TextDecoration.LineThrough else TextDecoration.None,
color = MaterialTheme.colors.onSurface,
color = MaterialTheme.colorScheme.onSurface,
),
keyboardOptions = KeyboardOptions.Default.copy(
capitalization = KeyboardCapitalization.Sentences,
@ -218,8 +218,9 @@ fun ExistingSubtaskRow(
.alpha(if (task.isCompleted || task.task.isHidden) ContentAlpha.disabled else ContentAlpha.high)
.align(Alignment.Top)
.padding(top = 12.dp),
style = MaterialTheme.typography.body1.copy(
textDecoration = if (task.isCompleted) TextDecoration.LineThrough else TextDecoration.None
style = MaterialTheme.typography.bodyLarge.copy(
textDecoration = if (task.isCompleted) TextDecoration.LineThrough else TextDecoration.None,
color = MaterialTheme.colorScheme.onSurface,
)
)
if (task.hasChildren()) {
@ -237,7 +238,7 @@ fun ExistingSubtaskRow(
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun NoSubtasks() {
MdcTheme {
TasksTheme {
SubtaskRow(
originalFilter = null,
filter = null,
@ -259,7 +260,7 @@ fun NoSubtasks() {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun SubtasksPreview() {
MdcTheme {
TasksTheme {
SubtaskRow(
originalFilter = null,
filter = null,

@ -7,7 +7,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.android.material.composethemeadapter.MdcTheme
import org.tasks.R
import org.tasks.compose.Chip
import org.tasks.compose.ChipGroup
@ -16,6 +15,7 @@ import org.tasks.compose.TaskEditRow
import org.tasks.data.entity.TagData
import org.tasks.themes.ColorProvider
import org.tasks.themes.CustomIcons
import org.tasks.themes.TasksTheme
@Composable
fun TagsRow(
@ -57,7 +57,7 @@ fun TagsRow(
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun NoTags() {
MdcTheme {
TasksTheme {
TagsRow(
tags = emptyList(),
colorProvider = { 0 },
@ -71,7 +71,7 @@ fun NoTags() {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun SingleTag() {
MdcTheme {
TasksTheme {
TagsRow(
tags = listOf(
TagData(
@ -90,7 +90,7 @@ fun SingleTag() {
@Preview(showBackground = true, widthDp = 320)
@Composable
fun BunchOfTags() {
MdcTheme {
TasksTheme {
TagsRow(
tags = listOf(
TagData(name = "One"),
@ -109,7 +109,7 @@ fun BunchOfTags() {
@Preview(showBackground = true, widthDp = 320)
@Composable
fun TagWithReallyLongName() {
MdcTheme {
TasksTheme {
TagsRow(
tags = listOf(
TagData(

@ -5,12 +5,13 @@ import android.text.format.DateUtils
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.material.ContentAlpha
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.Text
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Pause
import androidx.compose.material.icons.outlined.PlayArrow
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
@ -22,11 +23,11 @@ import androidx.compose.ui.draw.alpha
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.google.android.material.composethemeadapter.MdcTheme
import kotlinx.coroutines.delay
import org.tasks.R
import org.tasks.compose.DisabledText
import org.tasks.compose.TaskEditRow
import org.tasks.themes.TasksTheme
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import kotlin.time.Duration.Companion.seconds
@ -81,6 +82,7 @@ fun TimerRow(
modifier = Modifier
.weight(1f)
.padding(vertical = 20.dp),
color = MaterialTheme.colorScheme.onSurface,
)
}
IconButton(
@ -97,7 +99,8 @@ fun TimerRow(
Icons.Outlined.PlayArrow
},
modifier = Modifier.alpha(ContentAlpha.medium),
contentDescription = null
contentDescription = null,
tint = MaterialTheme.colorScheme.onSurface,
)
}
}
@ -116,7 +119,7 @@ fun TimerRow(
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun NoTimer() {
MdcTheme {
TasksTheme {
TimerRow(started = 0, estimated = 0, elapsed = 0, timerClicked = {}, onClick = {})
}
}
@ -125,7 +128,7 @@ fun NoTimer() {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun RunningTimer() {
MdcTheme {
TasksTheme {
TimerRow(started = currentTimeMillis(), estimated = 900, elapsed = 400, timerClicked = {}, onClick = {})
}
}

@ -6,7 +6,7 @@ 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.MaterialTheme
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.Modifier
@ -18,11 +18,11 @@ import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewmodel.compose.viewModel
import com.google.accompanist.permissions.ExperimentalPermissionsApi
import com.google.accompanist.permissions.rememberMultiplePermissionsState
import com.google.android.material.composethemeadapter.MdcTheme
import org.tasks.R
import org.tasks.calendars.AndroidCalendar
import org.tasks.calendars.CalendarPickerViewModel
import org.tasks.compose.collectAsStateLifecycleAware
import org.tasks.themes.TasksTheme
@OptIn(ExperimentalPermissionsApi::class)
@Composable
@ -67,7 +67,7 @@ fun CalendarPickerList(
) {
CheckableIconRow(
icon = painterResource(id = R.drawable.ic_outline_block_24),
tint = MaterialTheme.colors.onSurface,
tint = MaterialTheme.colorScheme.onSurface,
text = stringResource(id = R.string.dont_add_to_calendar),
selected = selectedCalendar == null,
onClick = { onSelected(null) },
@ -88,7 +88,7 @@ fun CalendarPickerList(
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun CalendarPickerPreview() {
MdcTheme {
TasksTheme {
CalendarPickerList(
calendars = listOf(
AndroidCalendar("1", "Home", -765666),
@ -105,7 +105,7 @@ fun CalendarPickerPreview() {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, widthDp = 320)
@Composable
fun CalendarPickerNoneSelected() {
MdcTheme {
TasksTheme {
CalendarPickerList(
calendars = listOf(
AndroidCalendar("1", "Home", -765666),

@ -1,13 +1,18 @@
package org.tasks.compose.pickers
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.layout.Box
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.width
import androidx.compose.material.ContentAlpha
import androidx.compose.material.Icon
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Check
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@ -31,7 +36,8 @@ fun CheckableIconRow(
content = {
Text(
text = text,
style = MaterialTheme.typography.body1,
style = MaterialTheme.typography.bodyMedium,
color = MaterialTheme.colorScheme.onSurface,
)
}
)
@ -64,7 +70,7 @@ fun CheckableIconRow(
Icon(
imageVector = Icons.Outlined.Check,
contentDescription = null,
tint = MaterialTheme.colors.primary.copy(alpha = ContentAlpha.medium),
tint = MaterialTheme.colorScheme.onSurface.copy(alpha = ContentAlpha.medium),
modifier = Modifier.padding(horizontal = 16.dp, vertical = 12.dp),
)
} else {

@ -8,11 +8,11 @@ import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material.ContentAlpha
import androidx.compose.material.Icon
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.KeyboardArrowUp
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
@ -36,8 +36,9 @@ fun CollapsibleRow(
) {
Text(
text = text,
style = MaterialTheme.typography.body2.copy(
style = MaterialTheme.typography.bodyMedium.copy(
fontWeight = FontWeight.Medium,
color = MaterialTheme.colorScheme.onSurface,
),
modifier = Modifier.weight(1f),
)
@ -48,7 +49,7 @@ fun CollapsibleRow(
Icon(
imageVector = Icons.Outlined.KeyboardArrowUp,
contentDescription = null,
tint = MaterialTheme.colors.onSurface.copy(alpha = ContentAlpha.medium),
tint = MaterialTheme.colorScheme.onSurface.copy(alpha = ContentAlpha.medium),
modifier = Modifier.rotate(rotationAngle)
)
}

@ -21,18 +21,20 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material.IconButton
import androidx.compose.material.MaterialTheme
import androidx.compose.material.RadioButton
import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.material.TopAppBar
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.ArrowBack
import androidx.compose.material3.Divider
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.RadioButton
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.material3.TopAppBar
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.runtime.Composable
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
@ -47,7 +49,6 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.core.os.ConfigurationCompat
import com.google.android.material.composethemeadapter.MdcTheme
import com.todoroo.andlib.utility.DateUtilities
import net.fortuna.ical4j.model.Recur
import net.fortuna.ical4j.model.WeekDay
@ -57,11 +58,13 @@ import org.tasks.compose.OutlinedNumberInput
import org.tasks.compose.OutlinedSpinner
import org.tasks.compose.border
import org.tasks.repeats.CustomRecurrenceViewModel
import org.tasks.themes.TasksTheme
import java.time.DayOfWeek
import java.time.format.FormatStyle
import java.time.format.TextStyle
import java.util.Locale
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun CustomRecurrence(
state: CustomRecurrenceViewModel.ViewState,
@ -81,6 +84,12 @@ fun CustomRecurrence(
Scaffold(
topBar = {
TopAppBar(
colors = TopAppBarDefaults.topAppBarColors(
containerColor = MaterialTheme.colorScheme.surface,
titleContentColor = MaterialTheme.colorScheme.onSurface,
navigationIconContentColor = MaterialTheme.colorScheme.onSurface,
actionIconContentColor = MaterialTheme.colorScheme.onSurface,
),
title = {
Text(
text = stringResource(id = R.string.repeats_custom_recurrence),
@ -91,7 +100,7 @@ fun CustomRecurrence(
Icon(
imageVector = Icons.Outlined.ArrowBack,
contentDescription = stringResource(id = R.string.save),
tint = MaterialTheme.colors.onSurface,
tint = MaterialTheme.colorScheme.onSurface,
)
}
},
@ -99,19 +108,17 @@ fun CustomRecurrence(
TextButton(onClick = discard) {
Text(
text = stringResource(id = R.string.cancel),
style = MaterialTheme.typography.body1.copy(
style = MaterialTheme.typography.bodyLarge.copy(
fontFeatureSettings = "c2sc, smcp"
)
)
}
},
backgroundColor = MaterialTheme.colors.surface,
contentColor = MaterialTheme.colors.onSurface,
)
}
) { padding ->
Surface(
color = MaterialTheme.colors.surface,
color = MaterialTheme.colorScheme.surface,
modifier = Modifier
.fillMaxSize()
.padding(padding),
@ -190,8 +197,8 @@ fun CustomRecurrence(
private fun Header(resId: Int) {
Text(
text = stringResource(id = resId),
style = MaterialTheme.typography.caption,
color = MaterialTheme.colors.onSurface,
style = MaterialTheme.typography.bodySmall,
color = MaterialTheme.colorScheme.onSurface,
modifier = Modifier.padding(horizontal = 16.dp),
)
}
@ -230,7 +237,7 @@ private fun WeekdayPicker(
.size(36.dp)
.let {
if (selected.contains(dayOfWeek)) {
it.background(MaterialTheme.colors.secondary, shape = CircleShape)
it.background(MaterialTheme.colorScheme.secondary, shape = CircleShape)
} else {
it.border(1.dp, border(), shape = CircleShape)
}
@ -240,8 +247,8 @@ private fun WeekdayPicker(
) {
Text(
text = string,
style = MaterialTheme.typography.body2,
color = if (selected.contains(dayOfWeek)) MaterialTheme.colors.onSecondary else MaterialTheme.colors.onSurface
style = MaterialTheme.typography.bodyMedium,
color = if (selected.contains(dayOfWeek)) MaterialTheme.colorScheme.onSecondary else MaterialTheme.colorScheme.onSurface
)
}
}
@ -411,7 +418,7 @@ private val Recur.Frequency.plural: Int
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
fun WeeklyPreview() {
MdcTheme {
TasksTheme {
CustomRecurrence(
state = CustomRecurrenceViewModel.ViewState(frequency = Recur.Frequency.WEEKLY),
save = {},
@ -431,7 +438,7 @@ fun WeeklyPreview() {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
fun MonthlyPreview() {
MdcTheme {
TasksTheme {
CustomRecurrence(
state = CustomRecurrenceViewModel.ViewState(frequency = Recur.Frequency.MONTHLY),
save = {},
@ -451,7 +458,7 @@ fun MonthlyPreview() {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
fun MinutelyPreview() {
MdcTheme {
TasksTheme {
CustomRecurrence(
state = CustomRecurrenceViewModel.ViewState(frequency = Recur.Frequency.MINUTELY),
save = {},
@ -471,7 +478,7 @@ fun MinutelyPreview() {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
fun HourlyPreview() {
MdcTheme {
TasksTheme {
CustomRecurrence(
state = CustomRecurrenceViewModel.ViewState(frequency = Recur.Frequency.HOURLY),
save = {},
@ -491,7 +498,7 @@ fun HourlyPreview() {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
fun DailyPreview() {
MdcTheme {
TasksTheme {
CustomRecurrence(
state = CustomRecurrenceViewModel.ViewState(frequency = Recur.Frequency.DAILY),
save = {},
@ -511,7 +518,7 @@ fun DailyPreview() {
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
fun YearlyPreview() {
MdcTheme {
TasksTheme {
CustomRecurrence(
state = CustomRecurrenceViewModel.ViewState(frequency = Recur.Frequency.YEARLY),
save = {},

@ -1,14 +1,10 @@
package org.tasks.compose.pickers
import android.content.res.Configuration
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material.Text
import androidx.compose.material3.DatePicker
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.material3.darkColorScheme
import androidx.compose.material3.lightColorScheme
import androidx.compose.material3.rememberDatePickerState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.derivedStateOf
@ -16,8 +12,8 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import com.google.android.material.composethemeadapter.MdcTheme
import org.tasks.R
import org.tasks.themes.TasksTheme
import org.tasks.time.DateTime
@OptIn(ExperimentalMaterial3Api::class)
@ -27,9 +23,7 @@ fun DatePickerDialog(
selected: (Long) -> Unit,
dismiss: () -> Unit,
) {
MaterialTheme(
colorScheme = if (isSystemInDarkTheme()) darkColorScheme() else lightColorScheme()
) {
TasksTheme {
val initialDateUTC by remember(initialDate) {
derivedStateOf {
DateTime(initialDate).toUTC().millis
@ -67,7 +61,7 @@ fun DatePickerDialog(
@Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
fun DatePickerPreview() {
MdcTheme {
TasksTheme {
DatePickerDialog(
initialDate = DateTime().plusDays(1).millis,
selected = {},

@ -6,9 +6,9 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.ContentAlpha
import androidx.compose.material.Icon
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment.Companion.CenterVertically
import androidx.compose.ui.Modifier
@ -56,10 +56,11 @@ fun FilterPicker(
Row(verticalAlignment = CenterVertically) {
Text(
text = filter.title!!,
style = MaterialTheme.typography.body2.copy(
style = MaterialTheme.typography.bodyMedium.copy(
fontWeight = FontWeight.Medium
),
modifier = Modifier.weight(1f),
color = MaterialTheme.colorScheme.onSurface,
)
if (filter is CaldavFilter && filter.principals > 0) {
Icon(

@ -7,8 +7,8 @@ import android.widget.ListAdapter
import androidx.appcompat.app.AlertDialog
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.ComposeView
import com.google.android.material.composethemeadapter.MdcTheme
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.tasks.themes.TasksTheme
class AlertDialogBuilder internal constructor(private val context: Context) {
private val builder: AlertDialog.Builder
@ -72,7 +72,7 @@ class AlertDialogBuilder internal constructor(private val context: Context) {
builder.setView(ComposeView(context)
.apply {
setContent {
MdcTheme {
TasksTheme {
content()
}
}

@ -23,9 +23,9 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.ContentAlpha
import androidx.compose.material.Icon
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.ArrowDownward
import androidx.compose.material.icons.outlined.ArrowUpward
@ -55,13 +55,13 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.core.content.ContextCompat
import androidx.core.view.WindowCompat
import com.google.android.material.composethemeadapter.MdcTheme
import com.todoroo.astrid.core.SortHelper
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import org.tasks.R
import org.tasks.compose.SystemBars
import org.tasks.compose.collectAsStateLifecycleAware
import org.tasks.themes.TasksTheme
@AndroidEntryPoint
class SortSettingsActivity : ComponentActivity() {
@ -74,15 +74,15 @@ class SortSettingsActivity : ComponentActivity() {
WindowCompat.setDecorFitsSystemWindows(window, false)
window.statusBarColor = ContextCompat.getColor(this, android.R.color.transparent)
setContent {
MdcTheme {
TasksTheme {
val scrimColor = if (isSystemInDarkTheme())
Color(0x52454545)
else
MaterialTheme.colors.onSurface.copy(.5f)
MaterialTheme.colorScheme.onSurface.copy(.5f)
// edge-to-edge potentially fixed in material3 v1.2.0
SystemBars(
statusBarColor = scrimColor,
navigationBarColor = MaterialTheme.colors.surface,
navigationBarColor = MaterialTheme.colorScheme.surface,
)
val state = viewModel.state.collectAsStateLifecycleAware().value
val mainSheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true)
@ -105,7 +105,7 @@ class SortSettingsActivity : ComponentActivity() {
overridePendingTransition(0, 0)
},
sheetState = mainSheetState,
containerColor = MaterialTheme.colors.surface,
containerColor = MaterialTheme.colorScheme.surface,
scrimColor = scrimColor,
shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp),
content = {
@ -144,7 +144,7 @@ class SortSettingsActivity : ComponentActivity() {
ModalBottomSheet(
onDismissRequest = closePicker,
sheetState = sheetState,
containerColor = MaterialTheme.colors.surface,
containerColor = MaterialTheme.colorScheme.surface,
scrimColor = Color.Transparent,
shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp),
content = {
@ -179,7 +179,7 @@ class SortSettingsActivity : ComponentActivity() {
ModalBottomSheet(
onDismissRequest = closePicker,
sheetState = sheetState,
containerColor = MaterialTheme.colors.surface,
containerColor = MaterialTheme.colorScheme.surface,
scrimColor = Color.Transparent,
shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp),
content = {
@ -218,7 +218,7 @@ class SortSettingsActivity : ComponentActivity() {
ModalBottomSheet(
onDismissRequest = closePicker,
sheetState = sheetState,
containerColor = MaterialTheme.colors.surface,
containerColor = MaterialTheme.colorScheme.surface,
scrimColor = Color.Transparent,
shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp),
content = {
@ -253,7 +253,7 @@ class SortSettingsActivity : ComponentActivity() {
ModalBottomSheet(
onDismissRequest = closePicker,
sheetState = sheetState,
containerColor = MaterialTheme.colors.surface,
containerColor = MaterialTheme.colorScheme.surface,
scrimColor = Color.Transparent,
shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp),
content = {
@ -424,19 +424,19 @@ fun SortOption(
) {
Text(
text = stringResource(id = resId),
style = MaterialTheme.typography.h6.copy(
style = MaterialTheme.typography.titleLarge.copy(
color = when {
selected -> MaterialTheme.colors.primary
enabled -> MaterialTheme.colors.onSurface
else -> MaterialTheme.colors.onSurface.copy(alpha = ContentAlpha.disabled)
selected -> MaterialTheme.colorScheme.primary
enabled -> MaterialTheme.colorScheme.onSurface
else -> MaterialTheme.colorScheme.onSurface.copy(alpha = ContentAlpha.disabled)
}
),
)
if (!enabled) {
Text(
text = stringResource(id = R.string.sort_not_available),
style = MaterialTheme.typography.body2.copy(
color = MaterialTheme.colors.error,
style = MaterialTheme.typography.bodyMedium.copy(
color = MaterialTheme.colorScheme.error,
fontStyle = FontStyle.Italic,
),
)
@ -516,7 +516,7 @@ fun BottomSheetContent(
) {
Text(
text = stringResource(R.string.completed_tasks_at_bottom),
style = MaterialTheme.typography.body1,
style = MaterialTheme.typography.bodyLarge,
modifier = Modifier.weight(1f),
)
Switch(
@ -567,8 +567,8 @@ fun SortRow(
.alpha(ContentAlpha.medium),
)
Column(modifier = Modifier.weight(1f)) {
Text(text = stringResource(id = title), style = MaterialTheme.typography.body1)
Text(text = stringResource(id = body), style = MaterialTheme.typography.body2)
Text(text = stringResource(id = title), style = MaterialTheme.typography.bodyLarge)
Text(text = stringResource(id = body), style = MaterialTheme.typography.bodyMedium)
}
if (showAscending) {
Spacer(modifier = Modifier.width(16.dp))
@ -609,7 +609,7 @@ fun OrderingButton(
)
Text(
text = stringResource(id = if (ascending) R.string.sort_ascending else R.string.sort_descending),
style = MaterialTheme.typography.body2,
style = MaterialTheme.typography.bodyMedium,
)
}
}
@ -633,7 +633,7 @@ private val Int.modeString: Int
@Preview(showBackground = true, uiMode = UI_MODE_NIGHT_YES)
@Composable
fun PreviewSortBottomSheet() {
MdcTheme {
TasksTheme {
Column {
BottomSheetContent(
groupMode = SortHelper.GROUP_NONE,

@ -6,10 +6,10 @@ import android.os.Bundle
import androidx.activity.compose.setContent
import androidx.activity.viewModels
import androidx.fragment.app.FragmentActivity
import com.google.android.material.composethemeadapter.MdcTheme
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.compose.collectAsStateLifecycleAware
import org.tasks.compose.pickers.CustomRecurrence
import org.tasks.themes.TasksTheme
@AndroidEntryPoint
class CustomRecurrenceActivity : FragmentActivity() {
@ -18,7 +18,7 @@ class CustomRecurrenceActivity : FragmentActivity() {
override fun onPostCreate(savedInstanceState: Bundle?) {
super.onPostCreate(savedInstanceState)
setContent {
MdcTheme {
TasksTheme {
CustomRecurrence(
state = viewModel.state.collectAsStateLifecycleAware().value,
save = {

@ -5,7 +5,6 @@ import android.os.Bundle
import androidx.core.os.bundleOf
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.setFragmentResult
import com.google.android.material.composethemeadapter.MdcTheme
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.R
import org.tasks.dialogs.DialogBuilder
@ -35,12 +34,10 @@ class AddAccountDialog : DialogFragment() {
.newDialog()
.setTitle(R.string.choose_synchronization_service)
.setContent {
MdcTheme {
org.tasks.compose.AddAccountDialog(
hasTasksAccount = hasTasksAccount,
selected = this::selected
)
}
org.tasks.compose.AddAccountDialog(
hasTasksAccount = hasTasksAccount,
selected = this::selected
)
}
.setNeutralButton(R.string.help) { _, _ -> activity?.openUri(R.string.help_url_sync) }
.setNegativeButton(R.string.cancel, null)

@ -15,12 +15,12 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material.Icon
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material.TextField
import androidx.compose.material.TextFieldDefaults
import androidx.compose.material.TriStateCheckbox
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.TextField
import androidx.compose.material3.TextFieldDefaults
import androidx.compose.material3.TriStateCheckbox
import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
import androidx.compose.runtime.livedata.observeAsState
@ -35,7 +35,6 @@ import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.state.ToggleableState
import androidx.compose.ui.unit.dp
import androidx.lifecycle.viewModelScope
import com.google.android.material.composethemeadapter.MdcTheme
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import org.tasks.R
@ -46,6 +45,7 @@ import org.tasks.extensions.addBackPressedCallback
import org.tasks.injection.ThemedInjectingAppCompatActivity
import org.tasks.themes.ColorProvider
import org.tasks.themes.CustomIcons
import org.tasks.themes.TasksTheme
import org.tasks.themes.Theme
import javax.inject.Inject
@ -78,7 +78,7 @@ class TagPickerActivity : ThemedInjectingAppCompatActivity() {
viewModel.search("")
setContent {
MdcTheme {
TasksTheme {
TagPicker(
viewModel,
onBackClicked = { handleBackPressed() },
@ -165,16 +165,23 @@ internal fun SearchBar(
"Done",
modifier = Modifier
.padding(6.dp)
.clickable { onBack() }
.clickable { onBack() },
tint = MaterialTheme.colorScheme.onSurface,
)
TextField(
value = searchPattern.value,
onValueChange = { viewModel.search(it) },
placeholder = { Text(invitation) },
colors = TextFieldDefaults.textFieldColors(
textColor = MaterialTheme.colors.onBackground,
backgroundColor = Color.Transparent,
placeholder = {
Text(
text = invitation,
color = MaterialTheme.colorScheme.onSurface,
)
},
colors = TextFieldDefaults.colors(
focusedTextColor = MaterialTheme.colorScheme.onSurface,
unfocusedContainerColor = Color.Transparent,
focusedContainerColor = Color.Transparent,
focusedIndicatorColor = Color.Transparent,
unfocusedIndicatorColor = Color.Transparent
),
@ -240,7 +247,9 @@ internal fun TagRow (
onClick: () -> Unit,
checkBox: @Composable RowScope.() -> Unit = {}
) {
Row(modifier = Modifier.fillMaxWidth().clickable{ onClick() },
Row(modifier = Modifier
.fillMaxWidth()
.clickable { onClick() },
verticalAlignment = Alignment.CenterVertically,
) {
Icon(
@ -251,7 +260,10 @@ internal fun TagRow (
)
Text(
text,
modifier = Modifier.weight(1f).padding(horizontal = 24.dp)
modifier = Modifier
.weight(1f)
.padding(horizontal = 24.dp),
color = MaterialTheme.colorScheme.onSurface,
)
checkBox()
}

@ -13,7 +13,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.unit.dp
import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.composethemeadapter.MdcTheme
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.api.CaldavFilter
import com.todoroo.astrid.api.Filter
@ -38,6 +37,7 @@ import org.tasks.dialogs.Linkify
import org.tasks.filters.PlaceFilter
import org.tasks.markdown.Markdown
import org.tasks.preferences.Preferences
import org.tasks.themes.TasksTheme
import org.tasks.time.DateTimeUtils.startOfDay
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import org.tasks.ui.CheckBoxProvider
@ -249,7 +249,7 @@ class TaskViewHolder internal constructor(
val toggleSubtasks = { task: Long, collapsed: Boolean -> callback.toggleSubtasks(task, collapsed) }
val onClick = { it: Filter -> callback.onClick(it) }
chipGroup.setContent {
MdcTheme {
TasksTheme {
ChipGroup(
modifier = Modifier.padding(
end = 16.dp,

@ -0,0 +1,19 @@
package org.tasks.themes
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.darkColorScheme
import androidx.compose.material3.lightColorScheme
import androidx.compose.runtime.Composable
@Composable
fun TasksTheme(
useDarkTheme: Boolean = isSystemInDarkTheme(),
content: @Composable () -> Unit,
) {
MaterialTheme(
colorScheme = if (useDarkTheme) darkColorScheme() else lightColorScheme(),
) {
content()
}
}

@ -8,7 +8,6 @@ import android.view.View
import android.view.ViewGroup
import android.widget.Toast.LENGTH_SHORT
import androidx.compose.ui.platform.ComposeView
import com.google.android.material.composethemeadapter.MdcTheme
import com.todoroo.astrid.activity.TaskEditFragment
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.R
@ -19,6 +18,7 @@ import org.tasks.compose.collectAsStateLifecycleAware
import org.tasks.compose.edit.CalendarRow
import org.tasks.extensions.Context.toast
import org.tasks.preferences.PermissionChecker
import org.tasks.themes.TasksTheme
import timber.log.Timber
import javax.inject.Inject
@ -45,7 +45,7 @@ class CalendarControlSet : TaskEditControlFragment() {
override fun bind(parent: ViewGroup?): View =
(parent as ComposeView).apply {
setContent {
MdcTheme {
TasksTheme {
CalendarRow(
eventUri = viewModel.eventUri.collectAsStateLifecycleAware().value,
selectedCalendar = viewModel.selectedCalendar.collectAsStateLifecycleAware().value?.let {

@ -10,7 +10,6 @@ import androidx.compose.ui.platform.ComposeView
import androidx.core.util.Pair
import com.google.accompanist.permissions.ExperimentalPermissionsApi
import com.google.accompanist.permissions.rememberMultiplePermissionsState
import com.google.android.material.composethemeadapter.MdcTheme
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.R
import org.tasks.Strings.isNullOrEmpty
@ -30,6 +29,7 @@ import org.tasks.location.LocationPickerActivity
import org.tasks.preferences.PermissionChecker
import org.tasks.preferences.PermissionChecker.backgroundPermissions
import org.tasks.preferences.Preferences
import org.tasks.themes.TasksTheme
import javax.inject.Inject
@AndroidEntryPoint
@ -85,7 +85,7 @@ class LocationControlSet : TaskEditControlFragment() {
override fun bind(parent: ViewGroup?): View =
(parent as ComposeView).apply {
setContent {
MdcTheme {
TasksTheme {
val hasPermissions =
rememberMultiplePermissionsState(permissions = backgroundPermissions())
.allPermissionsGranted

@ -8,7 +8,6 @@ import androidx.compose.ui.platform.ComposeView
import androidx.fragment.app.activityViewModels
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import com.google.android.material.composethemeadapter.MdcTheme
import com.todoroo.astrid.activity.MainActivityViewModel
import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.service.TaskCompleter
@ -24,6 +23,7 @@ import org.tasks.filters.SubtaskFilter
import org.tasks.preferences.Preferences
import org.tasks.tasklist.SectionedDataSource
import org.tasks.themes.ColorProvider
import org.tasks.themes.TasksTheme
import org.tasks.time.DateTimeUtils2.currentTimeMillis
import javax.inject.Inject
@ -52,7 +52,7 @@ class SubtaskControlSet : TaskEditControlFragment() {
(parent as ComposeView).apply {
listViewModel = ViewModelProvider(requireParentFragment())[TaskListViewModel::class.java]
setContent {
MdcTheme {
TasksTheme {
SubtaskRow(
originalFilter = viewModel.originalList,
filter = viewModel.selectedList.collectAsStateLifecycleAware().value,

@ -1021,16 +1021,6 @@
+| +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.0 (*)
+| +--- androidx.compose.runtime:runtime:1.6.7 (c)
+| \--- androidx.compose.runtime:runtime-saveable:1.6.7 (c)
++--- com.google.android.material:compose-theme-adapter:1.2.1
+| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.20 -> 2.0.0 (*)
+| +--- com.google.android.material:compose-theme-adapter-core:1.0.1
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.7.20 -> 2.0.0 (*)
+| | +--- androidx.core:core-ktx:1.9.0 -> 1.13.0 (*)
+| | +--- androidx.appcompat:appcompat:1.5.1 -> 1.7.0 (*)
+| | +--- com.google.android.material:material:1.7.0 -> 1.12.0 (*)
+| | +--- androidx.compose.runtime:runtime:1.3.1 -> 1.6.7 (*)
+| | \--- androidx.compose.foundation:foundation:1.3.1 -> 1.6.7 (*)
+| \--- androidx.compose.material:material:1.3.1 -> 1.6.7 (*)
++--- androidx.activity:activity-compose:1.9.0 (*)
++--- androidx.compose.material:material-icons-extended -> 1.6.7
+| \--- androidx.compose.material:material-icons-extended-android:1.6.7

@ -1250,16 +1250,6 @@
+| +--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 2.0.0 (*)
+| +--- androidx.compose.runtime:runtime:1.6.7 (c)
+| \--- androidx.compose.runtime:runtime-saveable:1.6.7 (c)
++--- com.google.android.material:compose-theme-adapter:1.2.1
+| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.20 -> 2.0.0 (*)
+| +--- com.google.android.material:compose-theme-adapter-core:1.0.1
+| | +--- org.jetbrains.kotlin:kotlin-stdlib:1.7.20 -> 2.0.0 (*)
+| | +--- androidx.core:core-ktx:1.9.0 -> 1.13.0 (*)
+| | +--- androidx.appcompat:appcompat:1.5.1 -> 1.7.0 (*)
+| | +--- com.google.android.material:material:1.7.0 -> 1.12.0 (*)
+| | +--- androidx.compose.runtime:runtime:1.3.1 -> 1.6.7 (*)
+| | \--- androidx.compose.foundation:foundation:1.3.1 -> 1.6.7 (*)
+| \--- androidx.compose.material:material:1.3.1 -> 1.6.7 (*)
++--- androidx.activity:activity-compose:1.9.0 (*)
++--- androidx.compose.material:material-icons-extended -> 1.6.7
+| \--- androidx.compose.material:material-icons-extended-android:1.6.7

@ -10,7 +10,6 @@ cert4android = "7814052"
coil = "2.6.0"
colorpicker = "0.0.15"
compose = "2024.05.00"
compose-theme-adapter = "1.2.1"
constraintlayout = "2.1.4"
dagger-hilt = "2.50"
dashclock-api = "2.0.0"
@ -101,7 +100,6 @@ coil-gif = { module = "io.coil-kt:coil-gif", version.ref = "coil" }
coil-svg = { module = "io.coil-kt:coil-svg", version.ref = "coil" }
coil-video = { module = "io.coil-kt:coil-video", version.ref = "coil" }
colorpicker = { module = "com.github.QuadFlask:colorpicker", version.ref = "colorpicker" }
compose-theme-adapter = { module = "com.google.android.material:compose-theme-adapter", version.ref = "compose-theme-adapter" }
dagger-hilt = { module = "com.google.dagger:hilt-android", version.ref = "dagger-hilt" }
dagger-hilt-compiler = { module = "com.google.dagger:hilt-compiler", version.ref = "dagger-hilt" }
dagger-hilt-gradle = { module = "com.google.dagger:hilt-android-gradle-plugin", version.ref = "dagger-hilt" }

Loading…
Cancel
Save