PlayerAndroid/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt

116 lines
4.1 KiB
Kotlin
Raw Normal View History

2019-07-22 15:26:37 +00:00
/*
2020-10-06 08:46:04 +00:00
* Copyright (c) 2020 Hemanth Savarla.
2019-07-22 15:26:37 +00:00
*
* Licensed under the GNU General Public License v3
*
2020-10-06 08:46:04 +00:00
* This is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
2019-07-22 15:26:37 +00:00
*
* This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
2020-10-06 08:46:04 +00:00
*
2019-07-22 15:26:37 +00:00
*/
2020-04-25 15:59:52 +00:00
package code.name.monkey.retromusic.fragments.genres
2019-07-22 15:26:37 +00:00
import android.os.Bundle
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
2021-11-17 15:48:52 +00:00
import androidx.activity.addCallback
2020-10-17 08:54:01 +00:00
import androidx.core.os.bundleOf
import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.GridLayoutManager
2019-07-22 15:26:37 +00:00
import androidx.recyclerview.widget.LinearLayoutManager
2020-10-17 08:54:01 +00:00
import code.name.monkey.retromusic.EXTRA_GENRE
2019-07-22 15:26:37 +00:00
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.adapter.GenreAdapter
2021-11-17 15:48:52 +00:00
import code.name.monkey.retromusic.extensions.navigate
import code.name.monkey.retromusic.fragments.ReloadType
import code.name.monkey.retromusic.fragments.base.AbsRecyclerViewFragment
2020-10-17 08:54:01 +00:00
import code.name.monkey.retromusic.interfaces.IGenreClickListener
import code.name.monkey.retromusic.model.Genre
2021-11-17 15:48:52 +00:00
import code.name.monkey.retromusic.util.PreferenceUtil
import code.name.monkey.retromusic.util.RetroUtil
import com.google.android.gms.cast.framework.CastButtonFactory
import com.google.android.material.transition.MaterialSharedAxis
2019-07-22 15:26:37 +00:00
class
GenresFragment : AbsRecyclerViewFragment<GenreAdapter, LinearLayoutManager>(),
2020-10-17 08:54:01 +00:00
IGenreClickListener {
2020-04-25 15:59:52 +00:00
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
libraryViewModel.getGenre().observe(viewLifecycleOwner, {
2020-08-13 08:24:36 +00:00
if (it.isNotEmpty())
adapter?.swapDataSet(it)
else
adapter?.swapDataSet(listOf())
})
2021-11-17 15:48:52 +00:00
requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) {
remove()
mainActivity.finish()
}
2019-07-22 15:26:37 +00:00
}
override fun createLayoutManager(): LinearLayoutManager {
return if (RetroUtil.isLandscape()) {
GridLayoutManager(activity, 4)
} else {
GridLayoutManager(activity, 2)
}
2019-07-22 15:26:37 +00:00
}
override fun createAdapter(): GenreAdapter {
val dataSet = if (adapter == null) ArrayList() else adapter!!.dataSet
return GenreAdapter(requireActivity(), dataSet, R.layout.item_genre, this)
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
super.onCreateOptionsMenu(menu, inflater)
menu.removeItem(R.id.action_grid_size)
menu.removeItem(R.id.action_layout_type)
menu.removeItem(R.id.action_sort_order)
menu.findItem(R.id.action_settings).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM)
//Setting up cast button
CastButtonFactory.setUpMediaRouteButton(requireContext(), menu, R.id.action_cast)
}
override fun onResume() {
super.onResume()
libraryViewModel.forceReload(ReloadType.Genres)
2019-07-22 15:26:37 +00:00
}
override val titleRes: Int
get() = R.string.genres
2019-07-22 15:26:37 +00:00
override val emptyMessage: Int
get() = R.string.no_genres
override val isShuffleVisible: Boolean
get() = false
2019-07-22 15:26:37 +00:00
companion object {
@JvmField
2019-10-09 12:52:02 +00:00
val TAG: String = GenresFragment::class.java.simpleName
2020-02-19 07:08:12 +00:00
@JvmStatic
2019-07-22 15:26:37 +00:00
fun newInstance(): GenresFragment {
return GenresFragment()
}
}
2020-10-17 08:54:01 +00:00
override fun onClickGenre(genre: Genre, view: View) {
exitTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true).addTarget(requireView())
reenterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false)
2020-10-17 08:54:01 +00:00
findNavController().navigate(
R.id.genreDetailsFragment,
bundleOf(EXTRA_GENRE to genre),
null,
null
2020-10-17 08:54:01 +00:00
)
}
2020-10-06 08:46:04 +00:00
}