From 65ae9ceacd1d003446c4f848b5b0b8103ab25126 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Mon, 17 Jun 2019 17:21:22 +0200 Subject: [PATCH] Fix prepopulating tags in task form --- .../habitica/ui/activities/TaskFormActivity.kt | 17 ++++++++++++++--- .../ui/fragments/tasks/TasksFragment.kt | 2 ++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt index f5af979e7..b8c6d116c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt @@ -95,6 +95,8 @@ class TaskFormActivity : BaseActivity() { private var task: Task? = null private var taskType: String = "" private var tags = listOf() + private var preselectedTags: ArrayList? = null + private var hasPreselectedTags = false private var selectedStat = Stats.STRENGTH set(value) { field = value @@ -135,6 +137,7 @@ class TaskFormActivity : BaseActivity() { taskType = bundle.getString(TASK_TYPE_KEY) ?: Task.TYPE_HABIT val taskId = bundle.getString(TASK_ID_KEY) + preselectedTags = bundle.getStringArrayList(SELECTED_TAGS_KEY) compositeSubscription.add(tagRepository.getTags() .map { tagRepository.getUnmanagedCopy(it) } @@ -270,6 +273,9 @@ class TaskFormActivity : BaseActivity() { val view = CheckBox(this) view.setPadding(padding, view.paddingTop, view.paddingRight, view.paddingBottom) view.text = tag.name + if (preselectedTags?.contains(tag.id) == true) { + view.isChecked = true + } tagsWrapper.addView(view) } setAllTagSelections() @@ -277,9 +283,13 @@ class TaskFormActivity : BaseActivity() { } private fun setAllTagSelections() { - tags.forEachIndexed { index, tag -> - val view = tagsWrapper.getChildAt(index) as? CheckBox - view?.isChecked = task?.tags?.find { it.id == tag.id } != null + if (hasPreselectedTags) { + tags.forEachIndexed { index, tag -> + val view = tagsWrapper.getChildAt(index) as? CheckBox + view?.isChecked = task?.tags?.find { it.id == tag.id } != null + } + } else { + hasPreselectedTags = true } } @@ -463,6 +473,7 @@ class TaskFormActivity : BaseActivity() { } companion object { + val SELECTED_TAGS_KEY = "selectedTags" const val TASK_ID_KEY = "taskId" const val USER_ID_KEY = "userId" const val TASK_TYPE_KEY = "type" diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.kt index fe1bd654a..f61981e7c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.kt @@ -20,6 +20,7 @@ import com.habitrpg.android.habitica.ui.views.tasks.TaskFilterDialog import io.reactivex.functions.Consumer import java.util.* import javax.inject.Inject +import kotlin.collections.ArrayList class TasksFragment : BaseMainFragment() { @@ -271,6 +272,7 @@ class TasksFragment : BaseMainFragment() { val bundle = Bundle() bundle.putString(TaskFormActivity.TASK_TYPE_KEY, type) + bundle.putStringArrayList(TaskFormActivity.SELECTED_TAGS_KEY, ArrayList(taskFilterHelper.tags)) val intent = Intent(activity, TaskFormActivity::class.java) intent.putExtras(bundle)