From 66a2b41250996bc7a3ac1ad35b12749c04682e82 Mon Sep 17 00:00:00 2001 From: "Alinson S. Xavier" Date: Wed, 29 Sep 2021 03:03:21 -0500 Subject: [PATCH] Target type: use dropdown instead of radio button --- .../habits/edit/EditHabitActivity.kt | 35 ++++++++++++---- .../main/res/layout/activity_edit_habit.xml | 40 ++++++++----------- .../src/main/res/values/strings.xml | 4 +- 3 files changed, 46 insertions(+), 33 deletions(-) diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitActivity.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitActivity.kt index 8bd84b98c..572917d10 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitActivity.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitActivity.kt @@ -88,6 +88,7 @@ class EditHabitActivity : AppCompatActivity() { var reminderHour = -1 var reminderMin = -1 var reminderDays: WeekdayList = WeekdayList.EVERY_DAY + var targetType = NumericalHabitType.AT_LEAST override fun onCreate(state: Bundle?) { super.onCreate(state) @@ -107,6 +108,7 @@ class EditHabitActivity : AppCompatActivity() { color = habit.color freqNum = habit.frequency.numerator freqDen = habit.frequency.denominator + targetType = habit.targetType habit.reminder?.let { reminderHour = it.hour reminderMin = it.minute @@ -117,10 +119,6 @@ class EditHabitActivity : AppCompatActivity() { binding.notesInput.setText(habit.description) binding.unitInput.setText(habit.unit) binding.targetInput.setText(habit.targetValue.toString()) - if (habit.targetType == NumericalHabitType.AT_MOST) { - binding.targetTypeAtMost.isChecked = true - binding.targetTypeAtLeast.isChecked = false - } } else { habitType = HabitType.fromInt(intent.getIntExtra("habitType", HabitType.YES_NO.value)) } @@ -177,6 +175,23 @@ class EditHabitActivity : AppCompatActivity() { dialog.show(supportFragmentManager, "frequencyPicker") } + populateTargetType() + binding.targetTypePicker.setOnClickListener { + val builder = AlertDialog.Builder(this) + val arrayAdapter = ArrayAdapter(this, android.R.layout.select_dialog_item) + arrayAdapter.add(getString(R.string.target_type_at_least)) + arrayAdapter.add(getString(R.string.target_type_at_most)) + builder.setAdapter(arrayAdapter) { dialog, which -> + targetType = when (which) { + 0 -> NumericalHabitType.AT_LEAST + else -> NumericalHabitType.AT_MOST + } + populateTargetType() + dialog.dismiss() + } + builder.show() + } + binding.numericalFrequencyPicker.setOnClickListener { val builder = AlertDialog.Builder(this) val arrayAdapter = ArrayAdapter(this, android.R.layout.select_dialog_item) @@ -267,10 +282,7 @@ class EditHabitActivity : AppCompatActivity() { habit.frequency = Frequency(freqNum, freqDen) if (habitType == HabitType.NUMERICAL) { habit.targetValue = targetInput.text.toString().toDouble() - if (binding.targetTypeAtLeast.isChecked) - habit.targetType = NumericalHabitType.AT_LEAST - else - habit.targetType = NumericalHabitType.AT_MOST + habit.targetType = targetType habit.unit = unitInput.text.trim().toString() } habit.type = habitType @@ -332,6 +344,13 @@ class EditHabitActivity : AppCompatActivity() { } } + private fun populateTargetType() { + binding.targetTypePicker.text = when (targetType) { + NumericalHabitType.AT_MOST -> getString(R.string.target_type_at_most) + else -> getString(R.string.target_type_at_least) + } + } + private fun updateColors() { androidColor = themeSwitcher.currentTheme.color(color).toInt() binding.colorButton.backgroundTintList = ColorStateList.valueOf(androidColor) diff --git a/uhabits-android/src/main/res/layout/activity_edit_habit.xml b/uhabits-android/src/main/res/layout/activity_edit_habit.xml index e30490bfb..75dddb551 100644 --- a/uhabits-android/src/main/res/layout/activity_edit_habit.xml +++ b/uhabits-android/src/main/res/layout/activity_edit_habit.xml @@ -167,29 +167,7 @@ android:hint="@string/measurable_units_example"/> - - - - - - - - - + + + + + + + + + diff --git a/uhabits-android/src/main/res/values/strings.xml b/uhabits-android/src/main/res/values/strings.xml index 8c5e9552a..13767b3df 100644 --- a/uhabits-android/src/main/res/values/strings.xml +++ b/uhabits-android/src/main/res/values/strings.xml @@ -185,8 +185,8 @@ Calendar Unit Target Type - At Least - At Most + At least + At most e.g. Did you exercise today? Question Target