mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-14 04:58:52 -06:00
add increment to Edit UI and Habit
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user