|
|
|
|
@ -5,15 +5,14 @@ import android.app.Activity
|
|
|
|
|
import android.app.Activity.RESULT_OK
|
|
|
|
|
import android.content.DialogInterface
|
|
|
|
|
import android.content.Intent
|
|
|
|
|
import android.os.Bundle
|
|
|
|
|
import android.view.View
|
|
|
|
|
import android.view.ViewGroup
|
|
|
|
|
import androidx.activity.compose.rememberLauncherForActivityResult
|
|
|
|
|
import androidx.activity.result.contract.ActivityResultContracts
|
|
|
|
|
import androidx.compose.runtime.Composable
|
|
|
|
|
import androidx.compose.runtime.LaunchedEffect
|
|
|
|
|
import androidx.compose.runtime.getValue
|
|
|
|
|
import androidx.compose.runtime.mutableStateOf
|
|
|
|
|
import androidx.compose.runtime.mutableIntStateOf
|
|
|
|
|
import androidx.compose.runtime.remember
|
|
|
|
|
import androidx.compose.ui.platform.ComposeView
|
|
|
|
|
import androidx.compose.ui.platform.LocalContext
|
|
|
|
|
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
|
|
|
|
import com.google.accompanist.permissions.ExperimentalPermissionsApi
|
|
|
|
|
import com.google.accompanist.permissions.PermissionStatus
|
|
|
|
|
@ -39,42 +38,24 @@ class ReminderControlSet : TaskEditControlFragment() {
|
|
|
|
|
@Inject lateinit var activity: Activity
|
|
|
|
|
@Inject lateinit var dialogBuilder: DialogBuilder
|
|
|
|
|
|
|
|
|
|
private val ringMode = mutableStateOf(0)
|
|
|
|
|
|
|
|
|
|
override fun createView(savedInstanceState: Bundle?) {
|
|
|
|
|
when {
|
|
|
|
|
viewModel.ringNonstop -> setRingMode(2)
|
|
|
|
|
viewModel.ringFiveTimes -> setRingMode(1)
|
|
|
|
|
else -> setRingMode(0)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun onClickRingType() {
|
|
|
|
|
val modes = resources.getStringArray(R.array.reminder_ring_modes)
|
|
|
|
|
val ringMode = when {
|
|
|
|
|
viewModel.ringNonstop -> 2
|
|
|
|
|
viewModel.ringFiveTimes -> 1
|
|
|
|
|
else -> 0
|
|
|
|
|
}
|
|
|
|
|
dialogBuilder
|
|
|
|
|
.newDialog()
|
|
|
|
|
.setSingleChoiceItems(modes, ringMode) { dialog: DialogInterface, which: Int ->
|
|
|
|
|
setRingMode(which)
|
|
|
|
|
dialog.dismiss()
|
|
|
|
|
}
|
|
|
|
|
.show()
|
|
|
|
|
}
|
|
|
|
|
private val ringMode = mutableIntStateOf(0)
|
|
|
|
|
|
|
|
|
|
private fun setRingMode(ringMode: Int) {
|
|
|
|
|
viewModel.ringNonstop = ringMode == 2
|
|
|
|
|
viewModel.ringFiveTimes = ringMode == 1
|
|
|
|
|
this.ringMode.value = ringMode
|
|
|
|
|
this.ringMode.intValue = ringMode
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@OptIn(ExperimentalPermissionsApi::class)
|
|
|
|
|
override fun bind(parent: ViewGroup?): View =
|
|
|
|
|
(parent as ComposeView).apply {
|
|
|
|
|
setContent {
|
|
|
|
|
@Composable
|
|
|
|
|
override fun Content() {
|
|
|
|
|
LaunchedEffect(Unit) {
|
|
|
|
|
when {
|
|
|
|
|
viewModel.ringNonstop -> setRingMode(2)
|
|
|
|
|
viewModel.ringFiveTimes -> setRingMode(1)
|
|
|
|
|
else -> setRingMode(0)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
val ringMode by remember { this@ReminderControlSet.ringMode }
|
|
|
|
|
val hasReminderPermissions by rememberReminderPermissionState()
|
|
|
|
|
val notificationPermissions = if (AndroidUtilities.atLeastTiramisu()) {
|
|
|
|
|
@ -100,6 +81,7 @@ class ReminderControlSet : TaskEditControlFragment() {
|
|
|
|
|
viewModel.addAlarm(Alarm(time = timestamp, type = TYPE_DATE_TIME))
|
|
|
|
|
}
|
|
|
|
|
val viewState = viewModel.viewState.collectAsStateWithLifecycle().value
|
|
|
|
|
val context = LocalContext.current
|
|
|
|
|
AlarmRow(
|
|
|
|
|
alarms = viewState.alarms,
|
|
|
|
|
hasNotificationPermissions = hasReminderPermissions &&
|
|
|
|
|
@ -113,7 +95,21 @@ class ReminderControlSet : TaskEditControlFragment() {
|
|
|
|
|
},
|
|
|
|
|
ringMode = ringMode,
|
|
|
|
|
addAlarm = viewModel::addAlarm,
|
|
|
|
|
openRingType = this@ReminderControlSet::onClickRingType,
|
|
|
|
|
openRingType = {
|
|
|
|
|
val modes = resources.getStringArray(R.array.reminder_ring_modes)
|
|
|
|
|
val selectedIndex = when {
|
|
|
|
|
viewModel.ringNonstop -> 2
|
|
|
|
|
viewModel.ringFiveTimes -> 1
|
|
|
|
|
else -> 0
|
|
|
|
|
}
|
|
|
|
|
dialogBuilder
|
|
|
|
|
.newDialog()
|
|
|
|
|
.setSingleChoiceItems(modes, selectedIndex) { dialog: DialogInterface, which: Int ->
|
|
|
|
|
setRingMode(which)
|
|
|
|
|
dialog.dismiss()
|
|
|
|
|
}
|
|
|
|
|
.show()
|
|
|
|
|
},
|
|
|
|
|
deleteAlarm = viewModel::removeAlarm,
|
|
|
|
|
pickDateAndTime = { replace ->
|
|
|
|
|
val timestamp = replace?.takeIf { it.type == TYPE_DATE_TIME }?.time
|
|
|
|
|
@ -126,7 +122,6 @@ class ReminderControlSet : TaskEditControlFragment() {
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
companion object {
|
|
|
|
|
val TAG = R.string.TEA_ctrl_reminders_pref
|
|
|
|
|
|