Reset filter menu action
This commit is contained in:
@@ -11,6 +11,8 @@ import androidx.core.view.MenuProvider
|
|||||||
import androidx.core.view.inputmethod.EditorInfoCompat
|
import androidx.core.view.inputmethod.EditorInfoCompat
|
||||||
import androidx.fragment.app.viewModels
|
import androidx.fragment.app.viewModels
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
|
import kotlinx.coroutines.flow.distinctUntilChangedBy
|
||||||
|
import kotlinx.coroutines.flow.drop
|
||||||
import org.koitharu.kotatsu.R
|
import org.koitharu.kotatsu.R
|
||||||
import org.koitharu.kotatsu.core.ui.list.ListSelectionController
|
import org.koitharu.kotatsu.core.ui.list.ListSelectionController
|
||||||
import org.koitharu.kotatsu.core.ui.util.MenuInvalidator
|
import org.koitharu.kotatsu.core.ui.util.MenuInvalidator
|
||||||
@@ -44,6 +46,11 @@ class RemoteListFragment : MangaListFragment(), FilterOwner {
|
|||||||
viewModel.onOpenManga.observeEvent(viewLifecycleOwner) {
|
viewModel.onOpenManga.observeEvent(viewLifecycleOwner) {
|
||||||
startActivity(DetailsActivity.newIntent(binding.root.context, it))
|
startActivity(DetailsActivity.newIntent(binding.root.context, it))
|
||||||
}
|
}
|
||||||
|
viewModel.header.distinctUntilChangedBy { it.isFilterApplied }
|
||||||
|
.drop(1)
|
||||||
|
.observe(viewLifecycleOwner) {
|
||||||
|
activity?.invalidateMenu()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onScrolledToEnd() {
|
override fun onScrolledToEnd() {
|
||||||
@@ -94,12 +101,18 @@ class RemoteListFragment : MangaListFragment(), FilterOwner {
|
|||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
R.id.action_filter_reset -> {
|
||||||
|
viewModel.resetFilter()
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPrepareMenu(menu: Menu) {
|
override fun onPrepareMenu(menu: Menu) {
|
||||||
super.onPrepareMenu(menu)
|
super.onPrepareMenu(menu)
|
||||||
menu.findItem(R.id.action_random)?.isEnabled = !viewModel.isRandomLoading.value
|
menu.findItem(R.id.action_random)?.isEnabled = !viewModel.isRandomLoading.value
|
||||||
|
menu.findItem(R.id.action_filter_reset)?.isVisible = viewModel.header.value.isFilterApplied
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onQueryTextSubmit(query: String?): Boolean {
|
override fun onQueryTextSubmit(query: String?): Boolean {
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<menu
|
<menu
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
<item
|
<item
|
||||||
android:id="@+id/action_search"
|
android:id="@+id/action_search"
|
||||||
@@ -22,6 +23,14 @@
|
|||||||
android:title="@string/filter"
|
android:title="@string/filter"
|
||||||
app:showAsAction="never" />
|
app:showAsAction="never" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_filter_reset"
|
||||||
|
android:orderInCategory="30"
|
||||||
|
android:title="@string/reset_filter"
|
||||||
|
android:visible="false"
|
||||||
|
app:showAsAction="never"
|
||||||
|
tools:visible="true" />
|
||||||
|
|
||||||
<item
|
<item
|
||||||
android:id="@+id/action_source_settings"
|
android:id="@+id/action_source_settings"
|
||||||
android:orderInCategory="50"
|
android:orderInCategory="50"
|
||||||
|
|||||||
Reference in New Issue
Block a user