in ReferenceAppKotlin/app/src/main/java/com/android/tv/reference/browse/BrowseFragment.kt [67:141]
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
displayMetrics.setTo(resources.displayMetrics)
blurImageTransformation = BlurImageTransformation(requireContext())
handler = Handler(Looper.getMainLooper())
backgroundManager = BackgroundManager.getInstance(requireActivity()).apply {
if (!isAttached) {
attach(requireActivity().window)
}
setThemeDrawableResourceId(BACKGROUND_RESOURCE_ID)
}
val signInMenuItem = BrowseCustomMenu.MenuItem(getString(R.string.sign_in)) {
findNavController().navigate(R.id.action_global_signInFragment)
}
val signOutMenuItem = BrowseCustomMenu.MenuItem(getString(R.string.sign_out)) {
viewModel.signOut()
}
viewModel = ViewModelProvider(this).get(BrowseViewModel::class.java)
viewModel.browseContent.observe(
this,
{
adapter = BrowseAdapter(it, viewModel.customMenuItems.value ?: listOf())
}
)
viewModel.customMenuItems.observe(
this,
{
adapter = BrowseAdapter(viewModel.browseContent.value ?: listOf(), it)
}
)
viewModel.isSignedIn.observe(
this,
{
viewModel.customMenuItems.postValue(
listOf(
BrowseCustomMenu(
getString(R.string.menu_identity),
listOf(
if (it) {
signOutMenuItem
} else {
signInMenuItem
}
)
)
)
)
}
)
setOnItemViewClickedListener { _, item, _, _ ->
when (item) {
is Video ->
findNavController().navigate(
BrowseFragmentDirections.actionBrowseFragmentToPlaybackFragment(item)
)
is BrowseCustomMenu.MenuItem -> item.handler()
}
}
setOnItemViewSelectedListener { _, item, _, _ ->
if (item is Video) {
updateBackgroundDelayed(item)
}
}
// BrowseSupportFragment allows for adding either text (with setTitle) or a Drawable
// (with setBadgeDrawable) to the top right of the screen. Since we don't have a suitable
// Drawable, we just display the app name in text.
title = getString(R.string.app_name)
}