Switch to new MenuProvider api

This commit is contained in:
Jarne Demeulemeester 2022-07-03 15:21:29 +02:00
parent 8e4c8d1f13
commit 22012873a0
No known key found for this signature in database
GPG key ID: 65C6006F2032DD14
3 changed files with 104 additions and 76 deletions

View file

@ -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()

View file

@ -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
)
}
}
}

View file

@ -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 {