add increment to Edit UI and Habit

pull/1960/head
Peketr 2 years ago
parent 1d05b9ed10
commit ca428a7dd5

@ -85,6 +85,7 @@ class EditHabitActivity : AppCompatActivity() {
var reminderMin = -1
var reminderDays: WeekdayList = WeekdayList.EVERY_DAY
var targetType = NumericalHabitType.AT_LEAST
var increment = 0.0
override fun onCreate(state: Bundle?) {
super.onCreate(state)
@ -105,6 +106,7 @@ class EditHabitActivity : AppCompatActivity() {
freqNum = habit.frequency.numerator
freqDen = habit.frequency.denominator
targetType = habit.targetType
increment = habit.increment
habit.reminder?.let {
reminderHour = it.hour
reminderMin = it.minute
@ -115,6 +117,7 @@ class EditHabitActivity : AppCompatActivity() {
binding.notesInput.setText(habit.description)
binding.unitInput.setText(habit.unit)
binding.targetInput.setText(habit.targetValue.toString())
} else {
habitType = HabitType.fromInt(intent.getIntExtra("habitType", HabitType.YES_NO.value))
}
@ -128,6 +131,7 @@ class EditHabitActivity : AppCompatActivity() {
reminderHour = state.getInt("reminderHour")
reminderMin = state.getInt("reminderMin")
reminderDays = WeekdayList(state.getInt("reminderDays"))
increment = state.getDouble("increment")
}
updateColors()
@ -254,6 +258,23 @@ class EditHabitActivity : AppCompatActivity() {
for (fragment in supportFragmentManager.fragments) {
(fragment as DialogFragment).dismiss()
}
populateWidgetAction()
binding.widgetActionPicker.setOnClickListener {
val builder = AlertDialog.Builder(this)
val arrayAdapter = ArrayAdapter<String>(this, android.R.layout.select_dialog_item)
arrayAdapter.add(getString(R.string.widget_action_dialog))
arrayAdapter.add(getString(R.string.widget_action_increment))
builder.setAdapter(arrayAdapter) { dialog, which ->
increment = when (which) {
1 -> 1.0
else -> 0.0
}
populateWidgetAction()
dialog.dismiss()
}
builder.show()
}
}
private fun save() {
@ -281,6 +302,7 @@ class EditHabitActivity : AppCompatActivity() {
habit.targetValue = binding.targetInput.text.toString().toDouble()
habit.targetType = targetType
habit.unit = binding.unitInput.text.trim().toString()
habit.increment = binding.incrementInput.text.toString().toDouble()
}
habit.type = habitType
@ -341,6 +363,19 @@ class EditHabitActivity : AppCompatActivity() {
}
}
@SuppressLint("StringFormatMatches")
private fun populateWidgetAction() {
binding.widgetActionPicker.text = when (increment){
0.0 -> getString(R.string.widget_action_dialog)
else -> getString(R.string.widget_action_increment)
}
binding.incrementInput.setText(increment.toString())
if (increment != 0.0)
binding.incrementRightBox.visibility = View.VISIBLE
else
binding.incrementRightBox.visibility = View.GONE
}
private fun populateTargetType() {
binding.targetTypePicker.text = when (targetType) {
NumericalHabitType.AT_MOST -> getString(R.string.target_type_at_most)
@ -375,6 +410,7 @@ class EditHabitActivity : AppCompatActivity() {
putInt("reminderHour", reminderHour)
putInt("reminderMin", reminderMin)
putInt("reminderDays", reminderDays.toInteger())
putDouble("increment",increment)
}
}
}

@ -208,6 +208,47 @@
</FrameLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/incrementOuterBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:baselineAligned="false">
<FrameLayout
style="@style/FormOuterBox"
android:layout_width="0dp"
android:layout_weight="1">
<LinearLayout style="@style/FormInnerBox">
<TextView
style="@style/FormLabel"
android:text="@string/widget_action" />
<TextView
style="@style/FormDropdown"
android:id="@+id/widgetActionPicker"
android:text="@string/widget_action_dialog"
android:textColor="?attr/contrast100"
/>
</LinearLayout>
</FrameLayout>
<FrameLayout
style="@style/FormOuterBox"
android:layout_width="0dp"
android:layout_weight="1"
android:id="@+id/incrementRightBox">
<LinearLayout style="@style/FormInnerBox">
<TextView
style="@style/FormLabel"
android:text="@string/increment" />
<EditText
style="@style/FormInput"
android:id="@+id/incrementInput"
android:maxLines="1"
android:inputType="numberDecimal"
android:hint="@string/example_increment"/>
</LinearLayout>
</FrameLayout>
</LinearLayout>
<FrameLayout
android:id="@+id/targetTypeOuterBox"
style="@style/FormOuterBox">

@ -118,6 +118,9 @@
<string name="developers">Developers</string>
<string name="version_n">Version %s</string>
<string name="frequency">Frequency</string>
<string name="widget_action">Widget Click Action</string>
<string name="widget_action_dialog">Open Dialog</string>
<string name="widget_action_increment">Increment</string>
<string name="checkmark">Checkmark</string>
<string name="checkmark_stack_widget" formatted="false">Checkmark Stack Widget</string>
<string name="frequency_stack_widget" formatted="false">Frequency Stack Widget</string>
@ -212,6 +215,7 @@
<string name="yes_or_no_short_example">e.g. Exercise</string>
<string name="color">Color</string>
<string name="example_target">e.g. 15</string>
<string name="example_increment">e.g. 2.0</string>
<string name="measurable_short_example">e.g. Run</string>
<string name="measurable_question_example">e.g. How many miles did you run today?</string>
<string name="measurable_units_example">e.g. miles</string>

@ -39,7 +39,8 @@ data class Habit(
val computedEntries: EntryList,
val originalEntries: EntryList,
val scores: ScoreList,
val streaks: StreakList
val streaks: StreakList,
var increment: Double = 0.0
) {
init {
if (uuid == null) this.uuid = UUID.randomUUID().toString().replace("-", "")
@ -119,6 +120,7 @@ data class Habit(
this.type = other.type
this.unit = other.unit
this.uuid = other.uuid
this.increment = other.increment
}
override fun equals(other: Any?): Boolean {

Loading…
Cancel
Save