Allow task completion marking from the task list

This commit is contained in:
Jonas Lochmann 2020-11-30 01:00:00 +01:00
parent 020e4e2be0
commit a778a5cb74
No known key found for this signature in database
GPG key ID: 8B8C9AEE10FA5B36
7 changed files with 25 additions and 5 deletions

View file

@ -52,7 +52,7 @@ class LockTaskFragment: Fragment() {
if (task.pendingRequest)
TaskReviewPendingDialogFragment.newInstance().show(parentFragmentManager)
else
ConfirmTaskDialogFragment.newInstance(taskId = task.taskId, taskTitle = task.taskTitle).show(parentFragmentManager)
ConfirmTaskDialogFragment.newInstance(taskId = task.taskId, taskTitle = task.taskTitle, fromManageScreen = false).show(parentFragmentManager)
}
}
}

View file

@ -83,6 +83,7 @@ class ChildTaskAdapter: RecyclerView.Adapter<ChildTaskAdapter.Holder>() {
binding.lastGrant = item.taskItem.lastGrantTimestamp.let { time ->
if (time == 0L) null else DateUtil.formatAbsoluteDate(context, time)
}
binding.pendingReview = item.taskItem.pendingRequest
binding.executePendingBindings()

View file

@ -43,6 +43,10 @@ class ChildTaskModel (application: Application): AndroidViewModel(application) {
}
}
val isChildTheCurrentDeviceUser = logic.deviceUserId.switchMap { deviceUserId ->
childIdLive.map { selectedId -> deviceUserId == selectedId }
}
fun init(childId: String) {
if (didInit) return

View file

@ -32,11 +32,13 @@ class ConfirmTaskDialogFragment: DialogFragment() {
private const val DIALOG_TAG = "ConfirmTaskDialogFragment"
private const val TASK_TITLE = "taskTitle"
private const val TASK_ID = "taskId"
private const val FROM_MANAGE_SCREEN = "fromManageScreen"
fun newInstance(taskId: String, taskTitle: String) = ConfirmTaskDialogFragment().apply {
fun newInstance(taskId: String, taskTitle: String, fromManageScreen: Boolean) = ConfirmTaskDialogFragment().apply {
arguments = Bundle().apply {
putString(TASK_ID, taskId)
putString(TASK_TITLE, taskTitle)
putBoolean(FROM_MANAGE_SCREEN, fromManageScreen)
}
}
}
@ -44,11 +46,15 @@ class ConfirmTaskDialogFragment: DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val taskId = requireArguments().getString(TASK_ID)!!
val taskTitle = requireArguments().getString(TASK_TITLE)!!
val fromManageScreen = requireArguments().getBoolean(FROM_MANAGE_SCREEN)
val logic = getActivityViewModel(requireActivity()).logic
val messagePrefix = if (fromManageScreen) getString(R.string.lock_task_confirm_dialog_from_manage_screen) + " " else ""
val message = messagePrefix + getString(R.string.lock_task_confirm_dialog)
return AlertDialog.Builder(requireContext(), theme)
.setTitle(taskTitle)
.setMessage(R.string.lock_task_confirm_dialog)
.setMessage(message)
.setNegativeButton(R.string.generic_no, null)
.setPositiveButton(R.string.generic_yes) { _, _ ->
runAsync {

View file

@ -66,6 +66,7 @@ class ManageChildTasksFragment: Fragment(), EditTaskDialogFragment.Listener {
recycler.adapter = adapter
model.listContent.observe(viewLifecycleOwner) { adapter.data = it }
model.isChildTheCurrentDeviceUser.observe(viewLifecycleOwner) {/* keep the value fresh */}
adapter.listener = object: ChildTaskAdapter.Listener {
override fun onAddClicked() {
@ -75,9 +76,15 @@ class ManageChildTasksFragment: Fragment(), EditTaskDialogFragment.Listener {
}
override fun onTaskClicked(task: ChildTask) {
if (auth.requestAuthenticationOrReturnTrue()) {
if (auth.isParentAuthenticated()) {
EditTaskDialogFragment.newInstance(childId = childId, taskId = task.taskId, listener = this@ManageChildTasksFragment).show(parentFragmentManager)
}
} else if (model.isChildTheCurrentDeviceUser.value == true && !task.pendingRequest) {
ConfirmTaskDialogFragment.newInstance(
taskId = task.taskId,
taskTitle = task.taskTitle,
fromManageScreen = true
).show(parentFragmentManager)
} else auth.requestAuthentication()
}
}

View file

@ -628,6 +628,7 @@
</string>
<string name="lock_task_confirm_dialog">Hast Du diese Aufgabe erledigt? Die Zeit gibt es
sowieso erst, wenn ein Elternteil das bestätigt hat.</string>
<string name="lock_task_confirm_dialog_from_manage_screen">Zum Verändern der Aufgabe muss sich erst ein Elternteil anmelden.</string>
<string name="lock_task_review_pending_dialog">Die Erledigung der Aufgabe wurde markiert.
Jetzt muss nur noch ein Elternteil das auf der Startseite von TimeLimit besätigen.
</string>

View file

@ -684,6 +684,7 @@
</string>
<string name="lock_task_confirm_dialog">Have you finished this task? The time
will only be granted if a parent confirms it.</string>
<string name="lock_task_confirm_dialog_from_manage_screen">A parent must sign in first to modify the task.</string>
<string name="lock_task_review_pending_dialog">It is noted that this task is finished.
The only missing part is a parent which confirms this at the start screen of TimeLimit.
</string>