diff --git a/app/src/main/java/com/todoroo/astrid/data/Task.kt b/app/src/main/java/com/todoroo/astrid/data/Task.kt index 00b5393c3..ebb035e5e 100644 --- a/app/src/main/java/com/todoroo/astrid/data/Task.kt +++ b/app/src/main/java/com/todoroo/astrid/data/Task.kt @@ -10,7 +10,7 @@ import com.google.ical.values.RRule import com.todoroo.andlib.data.Table import com.todoroo.andlib.sql.Field import com.todoroo.andlib.utility.DateUtilities -import com.todoroo.astrid.dao.TaskDao +import com.todoroo.astrid.ui.HideUntilControlSet import org.tasks.Strings import org.tasks.backup.XmlReader import org.tasks.data.Tag @@ -196,6 +196,9 @@ class Task : Parcelable { /** Checks whether task is done. Requires DUE_DATE */ fun hasDueDate() = dueDate > 0 + fun createHideUntil(value: HideUntilControlSet.HideUntilValue) = + createHideUntil(value.setting, value.date) + /** * Create hide until for this task. * diff --git a/app/src/main/java/com/todoroo/astrid/ui/HideUntilControlSet.kt b/app/src/main/java/com/todoroo/astrid/ui/HideUntilControlSet.kt index b4de8d7f8..31cd5618e 100644 --- a/app/src/main/java/com/todoroo/astrid/ui/HideUntilControlSet.kt +++ b/app/src/main/java/com/todoroo/astrid/ui/HideUntilControlSet.kt @@ -23,7 +23,6 @@ import org.tasks.date.DateTimeUtils import org.tasks.dialogs.MyTimePickerDialog import org.tasks.locale.Locale import org.tasks.preferences.Preferences -import org.tasks.themes.ThemeBase import org.tasks.ui.HiddenTopArrayAdapter import org.tasks.ui.TaskEditControlFragment import java.util.* @@ -39,7 +38,6 @@ class HideUntilControlSet : TaskEditControlFragment(), OnItemSelectedListener { private val spinnerItems: MutableList = ArrayList() @Inject lateinit var activity: Activity - @Inject lateinit var themeBase: ThemeBase @Inject lateinit var preferences: Preferences @Inject lateinit var locale: Locale @@ -52,8 +50,7 @@ class HideUntilControlSet : TaskEditControlFragment(), OnItemSelectedListener { private lateinit var adapter: ArrayAdapter private var previousSetting = Task.HIDE_UNTIL_NONE private var selection = 0 - private var existingDate = EXISTING_TIME_UNSET.toLong() - private var selectedValue: HideUntilValue? = null + private var existingDate = EXISTING_TIME_UNSET @OnClick(R.id.clear) fun clearHideUntil() { @@ -183,7 +180,7 @@ class HideUntilControlSet : TaskEditControlFragment(), OnItemSelectedListener { } else { spinnerItems.add( 0, HideUntilValue(getString(R.string.TEA_hideUntil_label), Task.HIDE_UNTIL_NONE)) - EXISTING_TIME_UNSET.toLong() + EXISTING_TIME_UNSET } adapter.notifyDataSetChanged() } @@ -208,7 +205,7 @@ class HideUntilControlSet : TaskEditControlFragment(), OnItemSelectedListener { // ... at conclusion of dialog, update our list val item = adapter.getItem(position) if (item!!.date == SPECIFIC_DATE.toLong()) { - val customDate = DateTimeUtils.newDateTime(if (existingDate == EXISTING_TIME_UNSET.toLong()) DateUtilities.now() else existingDate) + val customDate = DateTimeUtils.newDateTime(if (existingDate == EXISTING_TIME_UNSET) DateUtilities.now() else existingDate) .withSecondOfMinute(0) val intent = Intent(activity, DateAndTimePickerActivity::class.java) intent.putExtra(DateAndTimePickerActivity.EXTRA_TIMESTAMP, customDate.millis) @@ -233,21 +230,21 @@ class HideUntilControlSet : TaskEditControlFragment(), OnItemSelectedListener { } private fun refreshDisplayView() { - selectedValue = adapter.getItem(selection) - viewModel.hideUntil = viewModel.task - ?.createHideUntil(selectedValue!!.setting, selectedValue!!.date) - clearButton.visibility = if (selectedValue!!.setting == Task.HIDE_UNTIL_NONE) View.GONE else View.VISIBLE + viewModel.hideUntilValue = adapter.getItem(selection) + clearButton.visibility = if (viewModel.hideUntilValue!!.setting == Task.HIDE_UNTIL_NONE) View.GONE else View.VISIBLE } - private class HideUntilValue @JvmOverloads internal constructor(val labelSpinner: String, val labelDisplay: String, val setting: Int, val date: Long = 0) { - + class HideUntilValue internal constructor( + private val labelSpinner: String, + val labelDisplay: String, + val setting: Int, + val date: Long = 0 + ) { internal constructor(label: String, setting: Int) : this(label, label, setting, 0) internal constructor(label: String, setting: Int, date: Long) : this(label, label, setting, date) - override fun toString(): String { - return labelSpinner - } + override fun toString() = labelSpinner } companion object { @@ -255,7 +252,7 @@ class HideUntilControlSet : TaskEditControlFragment(), OnItemSelectedListener { private const val EXTRA_CUSTOM = "extra_custom" private const val EXTRA_SELECTION = "extra_selection" private const val SPECIFIC_DATE = -1 - private const val EXISTING_TIME_UNSET = -2 + private const val EXISTING_TIME_UNSET = -2L private const val REQUEST_HIDE_UNTIL = 11011 } } \ No newline at end of file diff --git a/app/src/main/java/org/tasks/ui/TaskEditViewModel.kt b/app/src/main/java/org/tasks/ui/TaskEditViewModel.kt index fe646aecd..84e578ba9 100644 --- a/app/src/main/java/org/tasks/ui/TaskEditViewModel.kt +++ b/app/src/main/java/org/tasks/ui/TaskEditViewModel.kt @@ -23,6 +23,7 @@ import com.todoroo.astrid.service.TaskCompleter import com.todoroo.astrid.service.TaskDeleter import com.todoroo.astrid.service.TaskMover import com.todoroo.astrid.timers.TimerPlugin +import com.todoroo.astrid.ui.HideUntilControlSet import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.ImmutableSet @@ -96,11 +97,6 @@ class TaskEditViewModel @ViewModelInject constructor( hasDueTime(value) -> createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, value) else -> createDueDate(Task.URGENCY_SPECIFIC_DAY, value) } - if (oldDueDate > 0) { - if (hideUntil!! > 0) { - hideUntil = if (field!! > 0) hideUntil!! + field!! - oldDueDate else 0 - } - } } var priority: Int? = null @@ -109,8 +105,10 @@ class TaskEditViewModel @ViewModelInject constructor( var description: String? = null get() = field ?: task?.notes.stripCarriageReturns() - var hideUntil: Long? = null - get() = field ?: task?.hideUntil ?: 0 + val hideUntil: Long + get() = task?.hideUntil ?: 0 + + var hideUntilValue: HideUntilControlSet.HideUntilValue? = null var recurrence: String? = null get() = field ?: task?.recurrence @@ -257,7 +255,7 @@ class TaskEditViewModel @ViewModelInject constructor( it.dueDate != dueDate || it.priority != priority || it.notes != description || - it.hideUntil != hideUntil || + it.hideUntil != it.createHideUntil(hideUntilValue!!) || if (it.recurrence.isNullOrBlank()) { !recurrence.isNullOrBlank() } else { @@ -294,7 +292,7 @@ class TaskEditViewModel @ViewModelInject constructor( it.dueDate = dueDate!! it.priority = priority!! it.notes = description - it.hideUntil = hideUntil!! + it.hideUntil = it.createHideUntil(hideUntilValue!!) it.recurrence = recurrence it.repeatUntil = repeatUntil!! it.elapsedSeconds = elapsedSeconds!!