diff --git a/app/src/main/java/org/koitharu/kotatsu/explore/ui/ExploreFragment.kt b/app/src/main/java/org/koitharu/kotatsu/explore/ui/ExploreFragment.kt index ac681432b..24a880d0e 100644 --- a/app/src/main/java/org/koitharu/kotatsu/explore/ui/ExploreFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/explore/ui/ExploreFragment.kt @@ -36,6 +36,7 @@ import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.search.ui.MangaListActivity import org.koitharu.kotatsu.settings.SettingsActivity import org.koitharu.kotatsu.suggestions.ui.SuggestionsActivity +import org.koitharu.kotatsu.utils.ext.addMenuProvider import org.koitharu.kotatsu.utils.ext.getDisplayMessage import javax.inject.Inject @@ -70,6 +71,7 @@ class ExploreFragment : val spacing = resources.getDimensionPixelOffset(R.dimen.list_spacing) paddingHorizontal = spacing } + addMenuProvider(ExploreMenuProvider(view.context, viewModel)) viewModel.content.observe(viewLifecycleOwner) { exploreAdapter?.items = it } @@ -162,6 +164,7 @@ class ExploreFragment : } else { LinearLayoutManager(requireContext()) } + activity?.invalidateOptionsMenu() } private inner class SourceMenuListener( diff --git a/app/src/main/java/org/koitharu/kotatsu/explore/ui/ExploreMenuProvider.kt b/app/src/main/java/org/koitharu/kotatsu/explore/ui/ExploreMenuProvider.kt new file mode 100644 index 000000000..1151b00de --- /dev/null +++ b/app/src/main/java/org/koitharu/kotatsu/explore/ui/ExploreMenuProvider.kt @@ -0,0 +1,34 @@ +package org.koitharu.kotatsu.explore.ui + +import android.content.Context +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem +import androidx.core.view.MenuProvider +import org.koitharu.kotatsu.R + +class ExploreMenuProvider( + private val context: Context, + private val viewModel: ExploreViewModel, +) : MenuProvider { + + override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) { + menuInflater.inflate(R.menu.opt_explore, menu) + } + + override fun onMenuItemSelected(menuItem: MenuItem): Boolean { + return when (menuItem.itemId) { + R.id.action_grid -> { + viewModel.setGridMode(!menuItem.isChecked) + true + } + + else -> false + } + } + + override fun onPrepareMenu(menu: Menu) { + super.onPrepareMenu(menu) + menu.findItem(R.id.action_grid)?.isChecked = viewModel.isGrid.value == true + } +} diff --git a/app/src/main/java/org/koitharu/kotatsu/explore/ui/ExploreViewModel.kt b/app/src/main/java/org/koitharu/kotatsu/explore/ui/ExploreViewModel.kt index 5ab8c8c27..19989fb7c 100644 --- a/app/src/main/java/org/koitharu/kotatsu/explore/ui/ExploreViewModel.kt +++ b/app/src/main/java/org/koitharu/kotatsu/explore/ui/ExploreViewModel.kt @@ -69,6 +69,10 @@ class ExploreViewModel @Inject constructor( } } + fun setGridMode(value: Boolean) { + settings.isSourcesGridMode = value + } + private fun createContentFlow() = settings.observe() .filter { it == AppSettings.KEY_SOURCES_HIDDEN || diff --git a/app/src/main/res/menu/opt_explore.xml b/app/src/main/res/menu/opt_explore.xml new file mode 100644 index 000000000..67f6f9617 --- /dev/null +++ b/app/src/main/res/menu/opt_explore.xml @@ -0,0 +1,11 @@ + +