mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-21 05:09:00 +00:00
Add option to reset habit streaks. Fixes #1039
This commit is contained in:
parent
e121f9aabe
commit
29227f7772
6 changed files with 56 additions and 5 deletions
|
|
@ -132,6 +132,25 @@
|
|||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:id="@+id/task_reset_frequency_wrapper"
|
||||
android:layout_marginTop="20dp">
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:text="@string/reset_streak"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge" />
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/task_reset_frequency_spinner"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
|
|
|||
|
|
@ -807,4 +807,5 @@
|
|||
<string name="staff">Staff</string>
|
||||
<string name="expand_notes">Read More</string>
|
||||
<string name="collapse_notes">Show Less</string>
|
||||
<string name="reset_streak">Reset Streak</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -14,6 +14,12 @@
|
|||
<item>@string/other</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="task_reset_frequencies">
|
||||
<item>@string/repeatables_frequency_daily</item>
|
||||
<item>@string/repeatables_frequency_weekly</item>
|
||||
<item>@string/repeatables_frequency_monthly</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="daily_frequencies">
|
||||
<item>@string/frequency_weekly</item>
|
||||
<item>@string/frequency_daily</item>
|
||||
|
|
@ -122,4 +128,5 @@
|
|||
<item>dewinTheme</item>
|
||||
<item>airuTheme</item>
|
||||
</string-array>
|
||||
<string name="frequency_monthly">Monthly</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -380,6 +380,7 @@ open class Task : RealmObject, Parcelable {
|
|||
const val FILTER_COMPLETED = "completed"
|
||||
const val FREQUENCY_WEEKLY = "weekly"
|
||||
const val FREQUENCY_DAILY = "daily"
|
||||
const val FREQUENCY_MONTHLY = "monthly"
|
||||
|
||||
@JvmField
|
||||
val CREATOR: Parcelable.Creator<Task> = object : Parcelable.Creator<Task> {
|
||||
|
|
|
|||
|
|
@ -17,10 +17,7 @@ import android.support.v7.widget.RecyclerView
|
|||
import android.support.v7.widget.helper.ItemTouchHelper
|
||||
import android.text.TextUtils
|
||||
import android.util.TypedValue
|
||||
import android.view.KeyEvent
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.view.*
|
||||
import android.view.inputmethod.InputMethodManager
|
||||
import android.widget.*
|
||||
import com.habitrpg.android.habitica.R
|
||||
|
|
@ -103,7 +100,8 @@ class TaskFormActivity : BaseActivity(), AdapterView.OnItemSelectedListener {
|
|||
private val tagsWrapper: LinearLayout by bindView(R.id.task_tags_wrapper)
|
||||
private val tagsContainerLinearLayout: LinearLayout by bindView(R.id.task_tags_checklist)
|
||||
private val repeatablesFrequencySpinner: Spinner by bindView(R.id.task_repeatables_frequency_spinner)
|
||||
|
||||
private val taskResetFrequencyWrapper: ViewGroup by bindView(R.id.task_reset_frequency_wrapper)
|
||||
private val taskResetFrequencySpinner: Spinner by bindView(R.id.task_reset_frequency_spinner)
|
||||
|
||||
@Inject
|
||||
internal lateinit var taskFilterHelper: TaskFilterHelper
|
||||
|
|
@ -213,8 +211,16 @@ class TaskFormActivity : BaseActivity(), AdapterView.OnItemSelectedListener {
|
|||
|
||||
positiveCheckBox.isChecked = true
|
||||
negativeCheckBox.isChecked = true
|
||||
|
||||
val resetFrequencyAdapter = ArrayAdapter.createFromResource(this,
|
||||
R.array.task_reset_frequencies, android.R.layout.simple_spinner_item)
|
||||
resetFrequencyAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
|
||||
taskResetFrequencySpinner.adapter = resetFrequencyAdapter
|
||||
taskResetFrequencySpinner.setSelection(0)
|
||||
taskResetFrequencyWrapper.visibility = View.VISIBLE
|
||||
} else {
|
||||
mainWrapper.removeView(actionsLayout)
|
||||
taskResetFrequencyWrapper.visibility = View.GONE
|
||||
}
|
||||
|
||||
if (taskType == Task.TYPE_DAILY) {
|
||||
|
|
@ -861,6 +867,15 @@ class TaskFormActivity : BaseActivity(), AdapterView.OnItemSelectedListener {
|
|||
if (task.type == Task.TYPE_HABIT) {
|
||||
positiveCheckBox.isChecked = task.up ?: false
|
||||
negativeCheckBox.isChecked = task.down ?: false
|
||||
|
||||
val resetFrequency = task.frequency
|
||||
if (resetFrequency != null) {
|
||||
when (resetFrequency) {
|
||||
Task.FREQUENCY_DAILY -> taskResetFrequencySpinner.setSelection(0)
|
||||
Task.FREQUENCY_WEEKLY -> taskResetFrequencySpinner.setSelection(1)
|
||||
Task.FREQUENCY_MONTHLY -> taskResetFrequencySpinner.setSelection(2)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (task.type == Task.TYPE_DAILY) {
|
||||
|
|
@ -976,6 +991,13 @@ class TaskFormActivity : BaseActivity(), AdapterView.OnItemSelectedListener {
|
|||
Task.TYPE_HABIT -> {
|
||||
task.up = positiveCheckBox.isChecked
|
||||
task.down = negativeCheckBox.isChecked
|
||||
|
||||
task.frequency = when (taskResetFrequencySpinner.selectedItemPosition) {
|
||||
0 -> Task.FREQUENCY_DAILY
|
||||
1 -> Task.FREQUENCY_WEEKLY
|
||||
2 -> Task.FREQUENCY_MONTHLY
|
||||
else -> ""
|
||||
}
|
||||
}
|
||||
|
||||
Task.TYPE_DAILY -> {
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ public class TaskSerializer implements JsonSerializer<Task> {
|
|||
case "habit":
|
||||
obj.addProperty("up", task.getUp());
|
||||
obj.addProperty("down", task.getDown());
|
||||
obj.addProperty("frequency", task.getFrequency());
|
||||
break;
|
||||
case "daily":
|
||||
obj.addProperty("frequency", task.getFrequency());
|
||||
|
|
|
|||
Loading…
Reference in a new issue