From 22012873a02922e144991571a7e6c1162f293b5f Mon Sep 17 00:00:00 2001 From: Jarne Demeulemeester Date: Sun, 3 Jul 2022 15:21:29 +0200 Subject: [PATCH] Switch to new MenuProvider api --- .../jdtech/jellyfin/fragments/HomeFragment.kt | 42 +++++----- .../jellyfin/fragments/LibraryFragment.kt | 78 +++++++++++-------- .../jellyfin/fragments/MediaFragment.kt | 60 +++++++------- 3 files changed, 104 insertions(+), 76 deletions(-) diff --git a/app/src/main/java/dev/jdtech/jellyfin/fragments/HomeFragment.kt b/app/src/main/java/dev/jdtech/jellyfin/fragments/HomeFragment.kt index c1c3159a..29b7daa3 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/HomeFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/HomeFragment.kt @@ -9,6 +9,8 @@ import android.view.View import android.view.ViewGroup import android.widget.Toast import android.widget.Toast.LENGTH_LONG +import androidx.core.view.MenuHost +import androidx.core.view.MenuProvider import androidx.core.view.isVisible import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels @@ -38,25 +40,6 @@ class HomeFragment : Fragment() { private lateinit var errorDialog: ErrorDialogFragment - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setHasOptionsMenu(true) - } - - override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { - inflater.inflate(R.menu.home_menu, menu) - } - - override fun onOptionsItemSelected(item: MenuItem): Boolean { - return when (item.itemId) { - R.id.action_settings -> { - navigateToSettingsFragment() - true - } - else -> super.onOptionsItemSelected(item) - } - } - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -70,6 +53,27 @@ class HomeFragment : Fragment() { return binding.root } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + val menuHost: MenuHost = requireActivity() + menuHost.addMenuProvider(object : MenuProvider { + override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) { + menuInflater.inflate(R.menu.home_menu, menu) + } + + override fun onMenuItemSelected(menuItem: MenuItem): Boolean { + return when (menuItem.itemId) { + R.id.action_settings -> { + navigateToSettingsFragment() + true + } + else -> false + } + } + }, viewLifecycleOwner, Lifecycle.State.RESUMED) + } + override fun onResume() { super.onResume() diff --git a/app/src/main/java/dev/jdtech/jellyfin/fragments/LibraryFragment.kt b/app/src/main/java/dev/jdtech/jellyfin/fragments/LibraryFragment.kt index f6584882..a3783f0a 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/LibraryFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/LibraryFragment.kt @@ -3,6 +3,8 @@ package dev.jdtech.jellyfin.fragments import android.content.SharedPreferences import android.os.Bundle import android.view.* +import androidx.core.view.MenuHost +import androidx.core.view.MenuProvider import androidx.core.view.isVisible import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels @@ -39,36 +41,6 @@ class LibraryFragment : Fragment() { @Inject lateinit var sp: SharedPreferences - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setHasOptionsMenu(true) - } - - override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { - super.onCreateOptionsMenu(menu, inflater) - inflater.inflate(R.menu.library_menu, menu) - } - - override fun onOptionsItemSelected(item: MenuItem): Boolean { - return when (item.itemId) { - R.id.action_sort_by -> { - SortDialogFragment(args.libraryId, args.libraryType, viewModel, "sortBy").show( - parentFragmentManager, - "sortdialog" - ) - true - } - R.id.action_sort_order -> { - SortDialogFragment(args.libraryId, args.libraryType, viewModel, "sortOrder").show( - parentFragmentManager, - "sortdialog" - ) - true - } - else -> super.onOptionsItemSelected(item) - } - } - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -80,6 +52,45 @@ class LibraryFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + val menuHost: MenuHost = requireActivity() + menuHost.addMenuProvider( + object : MenuProvider { + override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) { + menuInflater.inflate(R.menu.library_menu, menu) + } + + override fun onMenuItemSelected(menuItem: MenuItem): Boolean { + return when (menuItem.itemId) { + R.id.action_sort_by -> { + SortDialogFragment( + args.libraryId, + args.libraryType, + viewModel, + "sortBy" + ).show( + parentFragmentManager, + "sortdialog" + ) + true + } + R.id.action_sort_order -> { + SortDialogFragment( + args.libraryId, + args.libraryType, + viewModel, + "sortOrder" + ).show( + parentFragmentManager, + "sortdialog" + ) + true + } + else -> false + } + } + }, viewLifecycleOwner, Lifecycle.State.RESUMED + ) + binding.errorLayout.errorRetryButton.setOnClickListener { viewModel.loadItems(args.libraryId, args.libraryType) } @@ -129,7 +140,12 @@ class LibraryFragment : Fragment() { SortOrder.ASCENDING } - viewModel.loadItems(args.libraryId, args.libraryType, sortBy = sortBy, sortOrder = sortOrder) + viewModel.loadItems( + args.libraryId, + args.libraryType, + sortBy = sortBy, + sortOrder = sortOrder + ) } } } diff --git a/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaFragment.kt b/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaFragment.kt index 5c542572..2635028a 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaFragment.kt @@ -3,6 +3,8 @@ package dev.jdtech.jellyfin.fragments import android.os.Bundle import android.view.* import androidx.appcompat.widget.SearchView +import androidx.core.view.MenuHost +import androidx.core.view.MenuProvider import androidx.core.view.isVisible import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels @@ -31,32 +33,6 @@ class MediaFragment : Fragment() { private lateinit var errorDialog: ErrorDialogFragment - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setHasOptionsMenu(true) - } - - override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { - inflater.inflate(R.menu.media_menu, menu) - - val search = menu.findItem(R.id.action_search) - val searchView = search.actionView as SearchView - searchView.queryHint = getString(R.string.search_hint) - - searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener { - override fun onQueryTextSubmit(p0: String?): Boolean { - if (p0 != null) { - navigateToSearchResultFragment(p0) - } - return true - } - - override fun onQueryTextChange(p0: String?): Boolean { - return false - } - }) - } - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -93,6 +69,38 @@ class MediaFragment : Fragment() { return binding.root } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + val menuHost: MenuHost = requireActivity() + menuHost.addMenuProvider(object : MenuProvider { + override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) { + menuInflater.inflate(R.menu.media_menu, menu) + + val search = menu.findItem(R.id.action_search) + val searchView = search.actionView as SearchView + searchView.queryHint = getString(R.string.search_hint) + + searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener { + override fun onQueryTextSubmit(p0: String?): Boolean { + if (p0 != null) { + navigateToSearchResultFragment(p0) + } + return true + } + + override fun onQueryTextChange(p0: String?): Boolean { + return false + } + }) + } + + override fun onMenuItemSelected(menuItem: MenuItem): Boolean { + return true + } + }, viewLifecycleOwner, Lifecycle.State.RESUMED) + } + override fun onStart() { super.onStart() requireActivity().window.let {