diff --git a/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt b/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt index 19f588415..768d489c6 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt +++ b/app/src/main/java/com/todoroo/astrid/activity/MainActivity.kt @@ -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() diff --git a/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.kt b/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.kt index c295750eb..0604bf650 100755 --- a/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.kt +++ b/app/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.kt @@ -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.TAG) - private val subtaskControlSet: SubtaskControlSet? - get() = getFragment(SubtaskControlSet.TAG) - private val startDateControlSet: StartDateControlSet? get() = getFragment(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() diff --git a/app/src/main/java/org/tasks/ui/ListFragment.kt b/app/src/main/java/org/tasks/ui/ListFragment.kt index 2efac6703..1ffda92b4 100644 --- a/app/src/main/java/org/tasks/ui/ListFragment.kt +++ b/app/src/main/java/org/tasks/ui/ListFragment.kt @@ -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(ListPicker.EXTRA_SELECTED_FILTER)?.let { if (it is GtasksFilter || it is CaldavFilter) { - setSelected(it) + viewModel.selectedList.value = it } else { throw RuntimeException("Unhandled filter type") } diff --git a/app/src/main/java/org/tasks/ui/SubtaskControlSet.kt b/app/src/main/java/org/tasks/ui/SubtaskControlSet.kt index 251b7bbf9..5d8c80089 100644 --- a/app/src/main/java/org/tasks/ui/SubtaskControlSet.kt +++ b/app/src/main/java/org/tasks/ui/SubtaskControlSet.kt @@ -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() }