/* * Copyright (c) 2020 Hemanth Savarla. * * Licensed under the GNU General Public License v3 * * 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. * * 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. * */ package code.name.monkey.retromusic.fragments.genres import android.os.Bundle import android.view.Menu import android.view.MenuInflater import android.view.MenuItem import android.view.View import androidx.activity.addCallback import androidx.core.os.bundleOf import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import code.name.monkey.retromusic.EXTRA_GENRE import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.GenreAdapter import code.name.monkey.retromusic.extensions.navigate import code.name.monkey.retromusic.fragments.ReloadType import code.name.monkey.retromusic.fragments.base.AbsRecyclerViewFragment import code.name.monkey.retromusic.interfaces.IGenreClickListener import code.name.monkey.retromusic.model.Genre 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 class GenresFragment : AbsRecyclerViewFragment(), IGenreClickListener { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) libraryViewModel.getGenre().observe(viewLifecycleOwner, { if (it.isNotEmpty()) adapter?.swapDataSet(it) else adapter?.swapDataSet(listOf()) }) requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner) { remove() mainActivity.finish() } } override fun createLayoutManager(): LinearLayoutManager { return if (RetroUtil.isLandscape()) { GridLayoutManager(activity, 4) } else { GridLayoutManager(activity, 2) } } 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) } override val titleRes: Int get() = R.string.genres override val emptyMessage: Int get() = R.string.no_genres override val isShuffleVisible: Boolean get() = false companion object { @JvmField val TAG: String = GenresFragment::class.java.simpleName @JvmStatic fun newInstance(): GenresFragment { return GenresFragment() } } override fun onClickGenre(genre: Genre, view: View) { exitTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true).addTarget(requireView()) reenterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false) findNavController().navigate( R.id.genreDetailsFragment, bundleOf(EXTRA_GENRE to genre), null, null ) } }