mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-14 21:18:51 -06:00
Skip days implemented. Scores not correct yet
This commit is contained in:
@@ -81,6 +81,8 @@ class EditHabitActivity : AppCompatActivity() {
|
||||
var androidColor = 0
|
||||
var freqNum = 1
|
||||
var freqDen = 1
|
||||
var isSkipDays = false
|
||||
var listSkipDays: WeekdayList = WeekdayList.NO_DAY
|
||||
var reminderHour = -1
|
||||
var reminderMin = -1
|
||||
var reminderDays: WeekdayList = WeekdayList.EVERY_DAY
|
||||
@@ -104,6 +106,8 @@ class EditHabitActivity : AppCompatActivity() {
|
||||
color = habit.color
|
||||
freqNum = habit.frequency.numerator
|
||||
freqDen = habit.frequency.denominator
|
||||
isSkipDays = habit.skipDays
|
||||
listSkipDays = habit.skipDaysList
|
||||
targetType = habit.targetType
|
||||
habit.reminder?.let {
|
||||
reminderHour = it.hour
|
||||
@@ -125,6 +129,8 @@ class EditHabitActivity : AppCompatActivity() {
|
||||
color = PaletteColor(state.getInt("paletteColor"))
|
||||
freqNum = state.getInt("freqNum")
|
||||
freqDen = state.getInt("freqDen")
|
||||
isSkipDays = state.getBoolean("isSkipDays", false)
|
||||
listSkipDays = WeekdayList(state.getInt("listSkipDays", 0))
|
||||
reminderHour = state.getInt("reminderHour")
|
||||
reminderMin = state.getInt("reminderMin")
|
||||
reminderDays = WeekdayList(state.getInt("reminderDays"))
|
||||
@@ -241,12 +247,31 @@ class EditHabitActivity : AppCompatActivity() {
|
||||
dialog.setListener { days: WeekdayList ->
|
||||
reminderDays = days
|
||||
if (reminderDays.isEmpty) reminderDays = WeekdayList.EVERY_DAY
|
||||
if (isSkipDays) reminderDays = WeekdayList(reminderDays.toArray(),listSkipDays.toArray())
|
||||
populateReminder()
|
||||
}
|
||||
dialog.setSelectedDays(reminderDays)
|
||||
dialog.dismissCurrentAndShow(supportFragmentManager, "dayPicker")
|
||||
}
|
||||
|
||||
populateSkipDays()
|
||||
binding.skipDaysPicker.setOnClickListener {
|
||||
val dialog = WeekdayPickerDialog()
|
||||
|
||||
dialog.setListener { days: WeekdayList ->
|
||||
listSkipDays = days
|
||||
if (listSkipDays.isEmpty) listSkipDays = WeekdayList.NO_DAY
|
||||
isSkipDays = (listSkipDays != WeekdayList.NO_DAY)
|
||||
if (reminderHour >= 0 && isSkipDays) {
|
||||
reminderDays = WeekdayList(reminderDays.toArray(),listSkipDays.toArray())
|
||||
populateReminder()
|
||||
}
|
||||
populateSkipDays()
|
||||
}
|
||||
dialog.setSelectedDays(listSkipDays)
|
||||
dialog.dismissCurrentAndShow(supportFragmentManager, "dayPicker")
|
||||
}
|
||||
|
||||
binding.buttonSave.setOnClickListener {
|
||||
if (validate()) save()
|
||||
}
|
||||
@@ -277,6 +302,8 @@ class EditHabitActivity : AppCompatActivity() {
|
||||
}
|
||||
|
||||
habit.frequency = Frequency(freqNum, freqDen)
|
||||
habit.skipDays = isSkipDays
|
||||
habit.skipDaysList = listSkipDays
|
||||
if (habitType == HabitType.NUMERICAL) {
|
||||
habit.targetValue = binding.targetInput.text.toString().toDouble()
|
||||
habit.targetType = targetType
|
||||
@@ -330,6 +357,14 @@ class EditHabitActivity : AppCompatActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun populateSkipDays() {
|
||||
if (isSkipDays) {
|
||||
binding.skipDaysPicker.text = listSkipDays.toFormattedString(this)
|
||||
} else {
|
||||
binding.skipDaysPicker.text = getString(R.string.skip_days_off)
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("StringFormatMatches")
|
||||
private fun populateFrequency() {
|
||||
binding.booleanFrequencyPicker.text = formatFrequency(freqNum, freqDen, resources)
|
||||
@@ -372,6 +407,8 @@ class EditHabitActivity : AppCompatActivity() {
|
||||
putInt("androidColor", androidColor)
|
||||
putInt("freqNum", freqNum)
|
||||
putInt("freqDen", freqDen)
|
||||
putBoolean("isSkipDays", isSkipDays)
|
||||
putInt("listSkipDays", listSkipDays.toInteger())
|
||||
putInt("reminderHour", reminderHour)
|
||||
putInt("reminderMin", reminderMin)
|
||||
putInt("reminderDays", reminderDays.toInteger())
|
||||
|
||||
@@ -73,6 +73,7 @@
|
||||
android:paddingRight="4dp">
|
||||
|
||||
<!-- Title and color -->
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -249,6 +250,24 @@
|
||||
|
||||
|
||||
<!-- Notes -->
|
||||
<FrameLayout
|
||||
style="@style/FormOuterBox"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout style="@style/FormInnerBox">
|
||||
|
||||
<TextView
|
||||
style="@style/FormLabel"
|
||||
android:text="@string/skip_days" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/skipDaysPicker"
|
||||
style="@style/FormDropdown"
|
||||
android:text="@string/skip_days_off" />
|
||||
</LinearLayout>
|
||||
</FrameLayout>
|
||||
|
||||
<FrameLayout style="@style/FormOuterBox">
|
||||
<LinearLayout style="@style/FormInnerBox">
|
||||
<TextView
|
||||
|
||||
@@ -54,12 +54,14 @@
|
||||
<string name="history">History</string>
|
||||
<string name="clear">Clear</string>
|
||||
<string name="reminder">Reminder</string>
|
||||
<string name="skip_days">Skip days</string>
|
||||
<string name="save">Save</string>
|
||||
<string name="streaks">Streaks</string>
|
||||
<string name="no_habits_found">You have no active habits</string>
|
||||
<string name="no_habits_left_to_do">You\'re all done for today!</string>
|
||||
<string name="long_press_to_toggle">Press-and-hold to check or uncheck</string>
|
||||
<string name="reminder_off">Off</string>
|
||||
<string name="skip_days_off">Off</string>
|
||||
<string name="create_habit">Create habit</string>
|
||||
<string name="edit_habit">Edit habit</string>
|
||||
<string name="check">Check</string>
|
||||
|
||||
Reference in New Issue
Block a user