Use selected list state in subtasks control set

pull/1917/head
Alex Baker 2 years ago
parent 25877f05e2
commit 543e169e33

@ -56,7 +56,6 @@ import org.tasks.themes.Theme
import org.tasks.themes.ThemeColor import org.tasks.themes.ThemeColor
import org.tasks.ui.DeadlineControlSet.DueDateChangeListener import org.tasks.ui.DeadlineControlSet.DueDateChangeListener
import org.tasks.ui.EmptyTaskEditFragment.Companion.newEmptyTaskEditFragment import org.tasks.ui.EmptyTaskEditFragment.Companion.newEmptyTaskEditFragment
import org.tasks.ui.ListFragment.OnListChanged
import org.tasks.ui.MainActivityEvent import org.tasks.ui.MainActivityEvent
import org.tasks.ui.MainActivityEventBus import org.tasks.ui.MainActivityEventBus
import org.tasks.ui.NavigationDrawerFragment import org.tasks.ui.NavigationDrawerFragment
@ -67,7 +66,7 @@ import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
class MainActivity : InjectingAppCompatActivity(), TaskListFragmentCallbackHandler, OnListChanged, TimerControlSetCallback, DueDateChangeListener, CommentBarFragmentCallback, SortDialogCallback { class MainActivity : InjectingAppCompatActivity(), TaskListFragmentCallbackHandler, TimerControlSetCallback, DueDateChangeListener, CommentBarFragmentCallback, SortDialogCallback {
@Inject lateinit var preferences: Preferences @Inject lateinit var preferences: Preferences
@Inject lateinit var defaultFilterProvider: DefaultFilterProvider @Inject lateinit var defaultFilterProvider: DefaultFilterProvider
@Inject lateinit var theme: Theme @Inject lateinit var theme: Theme
@ -476,10 +475,6 @@ class MainActivity : InjectingAppCompatActivity(), TaskListFragmentCallbackHandl
taskEditFragment!!.onDueDateChanged() taskEditFragment!!.onDueDateChanged()
} }
override fun onListChanged(filter: Filter?) {
taskEditFragment!!.onRemoteListChanged(filter)
}
override fun onStart() { override fun onStart() {
super.onStart() super.onStart()

@ -53,11 +53,7 @@ import org.tasks.R
import org.tasks.Strings.isNullOrEmpty import org.tasks.Strings.isNullOrEmpty
import org.tasks.analytics.Firebase import org.tasks.analytics.Firebase
import org.tasks.compose.BeastModeBanner import org.tasks.compose.BeastModeBanner
import org.tasks.data.Alarm import org.tasks.data.*
import org.tasks.data.Location
import org.tasks.data.TagData
import org.tasks.data.UserActivity
import org.tasks.data.UserActivityDao
import org.tasks.databinding.FragmentTaskEditBinding import org.tasks.databinding.FragmentTaskEditBinding
import org.tasks.date.DateTimeUtils.newDateTime import org.tasks.date.DateTimeUtils.newDateTime
import org.tasks.dialogs.DialogBuilder import org.tasks.dialogs.DialogBuilder
@ -67,7 +63,6 @@ import org.tasks.fragments.TaskEditControlSetFragmentManager
import org.tasks.markdown.MarkdownProvider import org.tasks.markdown.MarkdownProvider
import org.tasks.notifications.NotificationManager import org.tasks.notifications.NotificationManager
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.ui.SubtaskControlSet
import org.tasks.ui.TaskEditControlFragment import org.tasks.ui.TaskEditControlFragment
import org.tasks.ui.TaskEditEvent import org.tasks.ui.TaskEditEvent
import org.tasks.ui.TaskEditEventBus import org.tasks.ui.TaskEditEventBus
@ -338,9 +333,6 @@ class TaskEditFragment : Fragment(), Toolbar.OnMenuItemClickListener {
private val repeatControlSet: RepeatControlSet? private val repeatControlSet: RepeatControlSet?
get() = getFragment<RepeatControlSet>(RepeatControlSet.TAG) get() = getFragment<RepeatControlSet>(RepeatControlSet.TAG)
private val subtaskControlSet: SubtaskControlSet?
get() = getFragment<SubtaskControlSet>(SubtaskControlSet.TAG)
private val startDateControlSet: StartDateControlSet? private val startDateControlSet: StartDateControlSet?
get() = getFragment<StartDateControlSet>(StartDateControlSet.TAG) get() = getFragment<StartDateControlSet>(StartDateControlSet.TAG)
@ -391,10 +383,6 @@ class TaskEditFragment : Fragment(), Toolbar.OnMenuItemClickListener {
startDateControlSet?.onDueDateChanged() startDateControlSet?.onDueDateChanged()
} }
fun onRemoteListChanged(filter: Filter?) {
subtaskControlSet?.onRemoteListChanged(filter)
}
fun addComment(message: String?, picture: Uri?) { fun addComment(message: String?, picture: Uri?) {
val model = editViewModel.task!! val model = editViewModel.task!!
val userActivity = UserActivity() val userActivity = UserActivity()

@ -22,22 +22,6 @@ import javax.inject.Inject
class ListFragment : TaskEditControlFragment() { class ListFragment : TaskEditControlFragment() {
@Inject lateinit var chipProvider: ChipProvider @Inject lateinit var chipProvider: ChipProvider
private lateinit var callback: OnListChanged
interface OnListChanged {
fun onListChanged(filter: Filter?)
}
override fun onAttach(activity: Activity) {
super.onAttach(activity)
callback = activity as OnListChanged
}
private fun setSelected(filter: Filter) {
viewModel.selectedList.value = filter
callback.onListChanged(filter)
}
override fun bind(parent: ViewGroup?) = override fun bind(parent: ViewGroup?) =
(parent?.findViewById(R.id.compose_view) as ComposeView).apply { (parent?.findViewById(R.id.compose_view) as ComposeView).apply {
setContent { setContent {
@ -76,7 +60,7 @@ class ListFragment : TaskEditControlFragment() {
if (resultCode == Activity.RESULT_OK) { if (resultCode == Activity.RESULT_OK) {
data?.getParcelableExtra<Filter>(ListPicker.EXTRA_SELECTED_FILTER)?.let { data?.getParcelableExtra<Filter>(ListPicker.EXTRA_SELECTED_FILTER)?.let {
if (it is GtasksFilter || it is CaldavFilter) { if (it is GtasksFilter || it is CaldavFilter) {
setSelected(it) viewModel.selectedList.value = it
} else { } else {
throw RuntimeException("Unhandled filter type") throw RuntimeException("Unhandled filter type")
} }

@ -16,7 +16,9 @@ import android.widget.EditText
import android.widget.LinearLayout import android.widget.LinearLayout
import androidx.core.widget.addTextChangedListener import androidx.core.widget.addTextChangedListener
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.recyclerview.widget.DefaultItemAnimator import androidx.recyclerview.widget.DefaultItemAnimator
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
@ -35,7 +37,10 @@ import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.tasks.LocalBroadcastManager import org.tasks.LocalBroadcastManager
import org.tasks.R import org.tasks.R
import org.tasks.data.* import org.tasks.data.CaldavDao
import org.tasks.data.GoogleTask
import org.tasks.data.GoogleTaskDao
import org.tasks.data.TaskContainer
import org.tasks.data.TaskDao.TaskCriteria.activeAndVisible import org.tasks.data.TaskDao.TaskCriteria.activeAndVisible
import org.tasks.databinding.ControlSetSubtasksBinding import org.tasks.databinding.ControlSetSubtasksBinding
import org.tasks.extensions.Context.toast import org.tasks.extensions.Context.toast
@ -83,6 +88,15 @@ class SubtaskControlSet : TaskEditControlFragment(), SubtaskViewHolder.Callbacks
recyclerView.adapter = recyclerAdapter recyclerView.adapter = recyclerAdapter
} }
} }
lifecycleScope.launch {
viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.RESUMED) {
viewModel.selectedList.collect {
remoteList = it
updateUI()
}
}
}
} }
override fun bind(parent: ViewGroup?) = override fun bind(parent: ViewGroup?) =
@ -101,7 +115,7 @@ class SubtaskControlSet : TaskEditControlFragment(), SubtaskViewHolder.Callbacks
super.onResume() super.onResume()
localBroadcastManager.registerRefreshReceiver(refreshReceiver) localBroadcastManager.registerRefreshReceiver(refreshReceiver)
lifecycleScope.launch { lifecycleScope.launch {
viewModel.task?.let { viewModel.task.let {
googleTask = googleTaskDao.getByTaskId(it.id) googleTask = googleTaskDao.getByTaskId(it.id)
updateUI() updateUI()
} }
@ -187,11 +201,6 @@ class SubtaskControlSet : TaskEditControlFragment(), SubtaskViewHolder.Callbacks
} }
} }
fun onRemoteListChanged(filter: Filter?) {
remoteList = filter
updateUI()
}
private fun refresh() { private fun refresh() {
listViewModel.invalidate() listViewModel.invalidate()
} }

Loading…
Cancel
Save