From b455e531d33f31b37319c396d64ed8b47c23e9e5 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Sun, 19 Jun 2022 21:53:30 -0500 Subject: [PATCH] Use new compose fragment for reminder control set --- .../todoroo/astrid/ui/ReminderControlSet.kt | 164 ++++++++---------- .../main/res/layout/control_set_reminders.xml | 5 - .../control_set_template_no_padding.xml | 25 --- 3 files changed, 74 insertions(+), 120 deletions(-) delete mode 100644 app/src/main/res/layout/control_set_reminders.xml delete mode 100644 app/src/main/res/layout/control_set_template_no_padding.xml diff --git a/app/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.kt b/app/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.kt index ac4859bec..346b27c58 100644 --- a/app/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.kt +++ b/app/src/main/java/com/todoroo/astrid/ui/ReminderControlSet.kt @@ -4,18 +4,13 @@ import android.app.Activity import android.content.DialogInterface import android.content.Intent import android.os.Bundle -import android.view.ViewGroup import androidx.compose.foundation.clickable import androidx.compose.foundation.interaction.MutableInteractionSource -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.* import androidx.compose.material.MaterialTheme import androidx.compose.material.Text import androidx.compose.material.ripple.rememberRipple +import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.ExperimentalComposeUiApi @@ -26,7 +21,6 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.unit.dp import androidx.core.content.res.ResourcesCompat -import com.google.android.material.composethemeadapter.MdcTheme import com.todoroo.andlib.utility.AndroidUtilities import dagger.hilt.android.AndroidEntryPoint import org.tasks.R @@ -41,17 +35,16 @@ import org.tasks.data.Alarm.Companion.TYPE_REL_START import org.tasks.data.Alarm.Companion.whenDue import org.tasks.data.Alarm.Companion.whenOverdue import org.tasks.data.Alarm.Companion.whenStarted -import org.tasks.databinding.ControlSetRemindersBinding import org.tasks.date.DateTimeUtils import org.tasks.dialogs.DialogBuilder import org.tasks.dialogs.MyTimePickerDialog import org.tasks.reminders.AlarmToString -import org.tasks.ui.TaskEditControlFragment +import org.tasks.ui.TaskEditControlComposeFragment import java.util.concurrent.TimeUnit import javax.inject.Inject @AndroidEntryPoint -class ReminderControlSet : TaskEditControlFragment() { +class ReminderControlSet : TaskEditControlComposeFragment() { @Inject lateinit var activity: Activity @Inject lateinit var dialogBuilder: DialogBuilder @Inject lateinit var alarmToString: AlarmToString @@ -133,96 +126,87 @@ class ReminderControlSet : TaskEditControlFragment() { } @OptIn(ExperimentalComposeUiApi::class) - override fun bind(parent: ViewGroup?) = - ControlSetRemindersBinding.inflate(layoutInflater, parent, true).let { - - it.alertContainer.setContent { - MdcTheme { - val alarms = viewModel.selectedAlarms.collectAsStateLifecycleAware() - Column { - Spacer(modifier = Modifier.height(8.dp)) - alarms.value.forEach { alarm -> - AlarmRow(alarmToString.toString(alarm)) { - viewModel.selectedAlarms.value = - viewModel.selectedAlarms.value.minus(alarm) - } - } - Row(modifier = Modifier.fillMaxWidth()) { - Text( - text = stringResource(id = R.string.add_reminder), - style = MaterialTheme.typography.body1, - modifier = Modifier - .padding(vertical = 12.dp) - .clickable( - interactionSource = remember { MutableInteractionSource() }, - indication = rememberRipple(bounded = false), - onClick = { addAlarm() } - ) - .alpha( - ResourcesCompat.getFloat( - LocalContext.current.resources, - R.dimen.alpha_disabled - ) - ) + @Composable + override fun Body() { + val alarms = viewModel.selectedAlarms.collectAsStateLifecycleAware() + Column { + Spacer(modifier = Modifier.height(8.dp)) + alarms.value.forEach { alarm -> + AlarmRow(alarmToString.toString(alarm)) { + viewModel.selectedAlarms.value = + viewModel.selectedAlarms.value.minus(alarm) + } + } + Row(modifier = Modifier.fillMaxWidth()) { + Text( + text = stringResource(id = R.string.add_reminder), + style = MaterialTheme.typography.body1, + modifier = Modifier + .padding(vertical = 12.dp) + .clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = rememberRipple(bounded = false), + onClick = { addAlarm() } + ) + .alpha( + ResourcesCompat.getFloat( + LocalContext.current.resources, + R.dimen.alpha_disabled ) - Spacer(modifier = Modifier.weight(1f)) - val ringMode = remember { this@ReminderControlSet.ringMode } - if (alarms.value.isNotEmpty()) { - Text( - text = stringResource( - id = when (ringMode.value) { - 2 -> R.string.ring_nonstop - 1 -> R.string.ring_five_times - else -> R.string.ring_once - } - ), - style = MaterialTheme.typography.body1.copy( - textDecoration = TextDecoration.Underline - ), - modifier = Modifier - .padding(vertical = 12.dp, horizontal = 16.dp) - .clickable( - interactionSource = remember { MutableInteractionSource() }, - indication = rememberRipple(bounded = false), - onClick = { onClickRingType() } - ) - ) + ) + ) + Spacer(modifier = Modifier.weight(1f)) + val ringMode = remember { this@ReminderControlSet.ringMode } + if (alarms.value.isNotEmpty()) { + Text( + text = stringResource( + id = when (ringMode.value) { + 2 -> R.string.ring_nonstop + 1 -> R.string.ring_five_times + else -> R.string.ring_once } - } - Spacer(modifier = Modifier.height(8.dp)) - } - - val openCustomDialog = remember { showCustomDialog } - AddReminderDialog.AddCustomReminderDialog( - openCustomDialog, - addAlarm = this::addAlarmRow, - closeDialog = { - openCustomDialog.value = false - AndroidUtilities.hideKeyboard(activity) - } - ) - - val openRandomDialog = remember { showRandomDialog } - AddReminderDialog.AddRandomReminderDialog( - openRandomDialog, - addAlarm = this::addAlarmRow, - closeDialog = { - openRandomDialog.value = false - AndroidUtilities.hideKeyboard(activity) - } + ), + style = MaterialTheme.typography.body1.copy( + textDecoration = TextDecoration.Underline + ), + modifier = Modifier + .padding(vertical = 12.dp, horizontal = 16.dp) + .clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = rememberRipple(bounded = false), + onClick = { onClickRingType() } + ) ) } } - - it.root + Spacer(modifier = Modifier.height(8.dp)) } + val openCustomDialog = remember { showCustomDialog } + AddReminderDialog.AddCustomReminderDialog( + openCustomDialog, + addAlarm = this::addAlarmRow, + closeDialog = { + openCustomDialog.value = false + AndroidUtilities.hideKeyboard(activity) + } + ) + + val openRandomDialog = remember { showRandomDialog } + AddReminderDialog.AddRandomReminderDialog( + openRandomDialog, + addAlarm = this::addAlarmRow, + closeDialog = { + openRandomDialog.value = false + AndroidUtilities.hideKeyboard(activity) + } + ) + } + override val icon = R.drawable.ic_outline_notifications_24px override fun controlId() = TAG - override val rootLayout = R.layout.control_set_template_no_padding - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { if (requestCode == REQUEST_NEW_ALARM) { if (resultCode == Activity.RESULT_OK) { diff --git a/app/src/main/res/layout/control_set_reminders.xml b/app/src/main/res/layout/control_set_reminders.xml deleted file mode 100644 index 7c181f470..000000000 --- a/app/src/main/res/layout/control_set_reminders.xml +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/app/src/main/res/layout/control_set_template_no_padding.xml b/app/src/main/res/layout/control_set_template_no_padding.xml deleted file mode 100644 index 9ec9ffdbf..000000000 --- a/app/src/main/res/layout/control_set_template_no_padding.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - \ No newline at end of file