From 476f23d1a10d7e6579d7af194029b7e69db28abf Mon Sep 17 00:00:00 2001 From: pauliancu97 <32488931+pauliancu97@users.noreply.github.com> Date: Wed, 10 Nov 2021 15:36:47 +0200 Subject: [PATCH] Disable changes for tasks in challenges (#1667) * added resources to run project * disable editing for fields which cannot be edited when found in a task belonging to a challenge --- .../habitica/ui/activities/TaskFormActivity.kt | 8 ++++++++ .../ui/views/tasks/form/HabitScoringButtonsView.kt | 6 ++++++ .../ui/views/tasks/form/TaskDifficultyButtons.kt | 8 ++++++++ .../ui/views/tasks/form/TaskSchedulingControls.kt | 11 +++++++++++ 4 files changed, 33 insertions(+) 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 238ebeec0..0aadaf4af 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 @@ -208,6 +208,7 @@ class TaskFormActivity : BaseActivity() { this.challenge = challenge binding.challengeNameView.text = getString(R.string.challenge_task_name, challenge.name) binding.challengeNameView.visibility = View.VISIBLE + disableEditingForUneditableFieldsInChallengeTask() }, RxErrorHandler.handleEmptyError() ) @@ -621,6 +622,13 @@ class TaskFormActivity : BaseActivity() { ) } + private fun disableEditingForUneditableFieldsInChallengeTask() { + binding.textEditText.isEnabled = false + binding.taskDifficultyButtons.isEnabled = false + binding.taskSchedulingControls.isEnabled = false + binding.habitScoringButtons.isEnabled = false + } + override fun finish() { dismissKeyboard() super.finish() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/HabitScoringButtonsView.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/HabitScoringButtonsView.kt index ccb2fc030..001b6bc48 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/HabitScoringButtonsView.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/HabitScoringButtonsView.kt @@ -23,6 +23,12 @@ class HabitScoringButtonsView @JvmOverloads constructor( var tintColor: Int = ContextCompat.getColor(context, R.color.brand_300) var textTintColor: Int? = null + override fun setEnabled(isEnabled: Boolean) { + super.setEnabled(isEnabled) + binding.positiveView.isEnabled = isEnabled + binding.negativeView.isEnabled = isEnabled + } + var isPositive = true set(value) { field = value diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/TaskDifficultyButtons.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/TaskDifficultyButtons.kt index 3004a3a54..00d054340 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/TaskDifficultyButtons.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/TaskDifficultyButtons.kt @@ -10,6 +10,7 @@ import android.widget.LinearLayout import android.widget.Space import android.widget.TextView import androidx.core.content.ContextCompat +import androidx.core.view.children import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.extensions.asDrawable import com.habitrpg.android.habitica.extensions.inflate @@ -33,6 +34,13 @@ class TaskDifficultyButtons @JvmOverloads constructor( } private lateinit var selectedButton: View + override fun setEnabled(isEnabled: Boolean) { + super.setEnabled(isEnabled) + for (child in this.children) { + child.isEnabled = isEnabled + } + } + override fun onAttachedToWindow() { super.onAttachedToWindow() removeAllViews() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/TaskSchedulingControls.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/TaskSchedulingControls.kt index df95fc077..f9e143d75 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/TaskSchedulingControls.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/TaskSchedulingControls.kt @@ -11,6 +11,7 @@ import android.view.View import android.view.accessibility.AccessibilityEvent import android.widget.* import androidx.core.content.ContextCompat +import androidx.core.view.children import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.databinding.TaskFormTaskSchedulingBinding import com.habitrpg.android.habitica.extensions.dpToPx @@ -178,6 +179,16 @@ class TaskSchedulingControls @JvmOverloads constructor( configureViewsForFrequency() } + override fun setEnabled(isEnabled: Boolean) { + super.setEnabled(isEnabled) + for (button in binding.weeklyRepeatWrapper.children) { + button.isEnabled = isEnabled + } + binding.startDateWrapper.isEnabled = isEnabled + binding.monthlyRepeatDays.isEnabled = isEnabled + binding.monthlyRepeatWeeks.isEnabled = isEnabled + } + private fun configureViewsForType() { binding.startDateTitle.text = context.getString(if (taskType == Task.TYPE_DAILY) R.string.start_date else R.string.due_date) binding.repeatsEveryWrapper.visibility = if (taskType == Task.TYPE_DAILY) View.VISIBLE else View.GONE