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.ui.DeadlineControlSet.DueDateChangeListener
import org.tasks.ui.EmptyTaskEditFragment.Companion.newEmptyTaskEditFragment
import org.tasks.ui.ListFragment.OnListChanged
import org.tasks.ui.MainActivityEvent
import org.tasks.ui.MainActivityEventBus
import org.tasks.ui.NavigationDrawerFragment
@ -67,7 +66,7 @@ import timber.log.Timber
import javax.inject.Inject
@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 defaultFilterProvider: DefaultFilterProvider
@Inject lateinit var theme: Theme
@ -476,10 +475,6 @@ class MainActivity : InjectingAppCompatActivity(), TaskListFragmentCallbackHandl
taskEditFragment!!.onDueDateChanged()
}
override fun onListChanged(filter: Filter?) {
taskEditFragment!!.onRemoteListChanged(filter)
}
override fun onStart() {
super.onStart()

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

@ -21,22 +21,6 @@ import javax.inject.Inject
@AndroidEntryPoint
class ListFragment : TaskEditControlFragment() {
@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?) =
(parent?.findViewById(R.id.compose_view) as ComposeView).apply {
@ -76,7 +60,7 @@ class ListFragment : TaskEditControlFragment() {
if (resultCode == Activity.RESULT_OK) {
data?.getParcelableExtra<Filter>(ListPicker.EXTRA_SELECTED_FILTER)?.let {
if (it is GtasksFilter || it is CaldavFilter) {
setSelected(it)
viewModel.selectedList.value = it
} else {
throw RuntimeException("Unhandled filter type")
}

@ -16,7 +16,9 @@ import android.widget.EditText
import android.widget.LinearLayout
import androidx.core.widget.addTextChangedListener
import androidx.fragment.app.viewModels
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.recyclerview.widget.DefaultItemAnimator
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
@ -35,7 +37,10 @@ import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import org.tasks.LocalBroadcastManager
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.databinding.ControlSetSubtasksBinding
import org.tasks.extensions.Context.toast
@ -66,7 +71,7 @@ class SubtaskControlSet : TaskEditControlFragment(), SubtaskViewHolder.Callbacks
private var remoteList: Filter? = null
private var googleTask: GoogleTask? = null
private lateinit var recyclerAdapter: SubtasksRecyclerAdapter
override fun createView(savedInstanceState: Bundle?) {
viewModel.newSubtasks.forEach { addSubtask(it) }
recyclerAdapter = SubtasksRecyclerAdapter(activity, chipProvider, checkBoxProvider, this)
@ -83,6 +88,15 @@ class SubtaskControlSet : TaskEditControlFragment(), SubtaskViewHolder.Callbacks
recyclerView.adapter = recyclerAdapter
}
}
lifecycleScope.launch {
viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.RESUMED) {
viewModel.selectedList.collect {
remoteList = it
updateUI()
}
}
}
}
override fun bind(parent: ViewGroup?) =
@ -101,7 +115,7 @@ class SubtaskControlSet : TaskEditControlFragment(), SubtaskViewHolder.Callbacks
super.onResume()
localBroadcastManager.registerRefreshReceiver(refreshReceiver)
lifecycleScope.launch {
viewModel.task?.let {
viewModel.task.let {
googleTask = googleTaskDao.getByTaskId(it.id)
updateUI()
}
@ -187,11 +201,6 @@ class SubtaskControlSet : TaskEditControlFragment(), SubtaskViewHolder.Callbacks
}
}
fun onRemoteListChanged(filter: Filter?) {
remoteList = filter
updateUI()
}
private fun refresh() {
listViewModel.invalidate()
}

Loading…
Cancel
Save