diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt index 289fda277..1dbbab9fe 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/MainActivity.kt @@ -96,6 +96,7 @@ class MainActivity : AbsCastActivity(), OnSharedPreferenceChangeListener { } } navController.addOnDestinationChangedListener { _, destination, _ -> + val start = System.currentTimeMillis() if (destination.id == navGraph.startDestinationId) { currentFragment(R.id.fragment_container)?.enterTransition = null } @@ -116,6 +117,7 @@ class MainActivity : AbsCastActivity(), OnSharedPreferenceChangeListener { animate = true ) // Hide Bottom Navigation Bar } + showToast("Time : ${System.currentTimeMillis() - start}") } } diff --git a/app/src/main/java/code/name/monkey/retromusic/extensions/FragmentExtensions.kt b/app/src/main/java/code/name/monkey/retromusic/extensions/FragmentExtensions.kt index 90f479e13..b1e8f5930 100644 --- a/app/src/main/java/code/name/monkey/retromusic/extensions/FragmentExtensions.kt +++ b/app/src/main/java/code/name/monkey/retromusic/extensions/FragmentExtensions.kt @@ -24,7 +24,6 @@ import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.content.res.AppCompatResources import androidx.core.content.getSystemService import androidx.fragment.app.Fragment -import androidx.fragment.app.FragmentManager import androidx.navigation.fragment.NavHostFragment import code.name.monkey.retromusic.util.PreferenceUtil import com.google.android.material.appbar.MaterialToolbar @@ -58,12 +57,6 @@ inline fun Fragment.extraNotNull(key: String, default: T? = nu requireNotNull(if (value is T) value else default) { key } } -val NavHostFragment.currentFragment: Fragment? - get() = targetFragment - -val FragmentManager.currentNavigationFragment: Fragment? - get() = primaryNavigationFragment?.childFragmentManager?.fragments?.first() - fun AppCompatActivity.currentFragment(navHostId: Int): Fragment? { val navHostFragment: NavHostFragment = supportFragmentManager.findFragmentById(navHostId) as NavHostFragment diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumDetailsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumDetailsFragment.kt index 1fdf34e9a..34476eabb 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumDetailsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumDetailsFragment.kt @@ -112,7 +112,6 @@ class AlbumDetailsFragment : AbsMainActivityFragment(R.layout.fragment_album_det override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) _binding = FragmentAlbumDetailsBinding.bind(view) - setHasOptionsMenu(true) mainActivity.addMusicServiceEventListener(detailsViewModel) mainActivity.setSupportActionBar(binding.toolbar) @@ -347,8 +346,7 @@ class AlbumDetailsFragment : AbsMainActivityFragment(R.layout.fragment_album_det ) } - override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { - super.onCreateOptionsMenu(menu, inflater) + override fun onCreateMenu(menu: Menu, inflater: MenuInflater) { inflater.inflate(R.menu.menu_album_detail, menu) val sortOrder = menu.findItem(R.id.action_sort_order) setUpSortOrderMenu(sortOrder.subMenu) @@ -360,7 +358,7 @@ class AlbumDetailsFragment : AbsMainActivityFragment(R.layout.fragment_album_det ) } - override fun onOptionsItemSelected(item: MenuItem): Boolean { + override fun onMenuItemSelected(item: MenuItem): Boolean { return handleSortOrderMenuItem(item) } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumsFragment.kt index 55ff96cd2..4be365c80 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumsFragment.kt @@ -158,8 +158,8 @@ class AlbumsFragment : AbsRecyclerViewCustomGridSizeFragment - val sortOrder = when (menuItem.itemId) { + setOnMenuItemClickListener { item -> + val sortOrder = when (item.itemId) { R.id.action_sort_order_title -> SortOrder.ArtistSongSortOrder.SONG_A_Z R.id.action_sort_order_title_desc -> SortOrder.ArtistSongSortOrder.SONG_Z_A R.id.action_sort_order_album -> SortOrder.ArtistSongSortOrder.SONG_ALBUM R.id.action_sort_order_year -> SortOrder.ArtistSongSortOrder.SONG_YEAR R.id.action_sort_order_song_duration -> SortOrder.ArtistSongSortOrder.SONG_DURATION else -> { - throw IllegalArgumentException("invalid ${menuItem.title}") + throw IllegalArgumentException("invalid ${item.title}") } } - menuItem.isChecked = true + item.isChecked = true setSaveSortOrder(sortOrder) return@setOnMenuItemClickListener true } @@ -322,15 +321,17 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm private fun setUpSortOrderMenu(sortOrder: Menu) { when (savedSongSortOrder) { - SortOrder.ArtistSongSortOrder.SONG_A_Z -> sortOrder.findItem(R.id.action_sort_order_title).isChecked = true - SortOrder.ArtistSongSortOrder.SONG_Z_A -> sortOrder.findItem(R.id.action_sort_order_title_desc).isChecked = true + SortOrder.ArtistSongSortOrder.SONG_A_Z -> sortOrder.findItem(R.id.action_sort_order_title).isChecked = + true + SortOrder.ArtistSongSortOrder.SONG_Z_A -> sortOrder.findItem(R.id.action_sort_order_title_desc).isChecked = + true SortOrder.ArtistSongSortOrder.SONG_ALBUM -> sortOrder.findItem(R.id.action_sort_order_album).isChecked = true SortOrder.ArtistSongSortOrder.SONG_YEAR -> sortOrder.findItem(R.id.action_sort_order_year).isChecked = true SortOrder.ArtistSongSortOrder.SONG_DURATION -> sortOrder.findItem(R.id.action_sort_order_song_duration).isChecked = true - else-> { + else -> { throw IllegalArgumentException("invalid $savedSongSortOrder") } } @@ -352,8 +353,7 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm } } - override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { - super.onCreateOptionsMenu(menu, inflater) + override fun onCreateMenu(menu: Menu, inflater: MenuInflater) { inflater.inflate(R.menu.menu_artist_detail, menu) } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistsFragment.kt index ff85467e3..39e0adc50 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistsFragment.kt @@ -168,8 +168,8 @@ class ArtistsFragment : AbsRecyclerViewCustomGridSizeFragment { try { file.delete() diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsMainActivityFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsMainActivityFragment.kt index 2118a1092..17c1a82db 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsMainActivityFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsMainActivityFragment.kt @@ -15,21 +15,25 @@ package code.name.monkey.retromusic.fragments.base import android.os.Bundle +import android.view.View import androidx.annotation.LayoutRes +import androidx.core.view.MenuHost +import androidx.core.view.MenuProvider +import androidx.lifecycle.Lifecycle import code.name.monkey.retromusic.activities.MainActivity -import code.name.monkey.retromusic.extensions.setTaskDescriptionColorAuto import code.name.monkey.retromusic.fragments.LibraryViewModel import org.koin.androidx.viewmodel.ext.android.sharedViewModel -abstract class AbsMainActivityFragment(@LayoutRes layout: Int) : AbsMusicServiceFragment(layout) { +abstract class AbsMainActivityFragment(@LayoutRes layout: Int) : AbsMusicServiceFragment(layout), + MenuProvider { val libraryViewModel: LibraryViewModel by sharedViewModel() val mainActivity: MainActivity get() = activity as MainActivity - override fun onActivityCreated(savedInstanceState: Bundle?) { - super.onActivityCreated(savedInstanceState) - setHasOptionsMenu(true) - mainActivity.setTaskDescriptionColorAuto() + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + val menuHost: MenuHost = requireActivity() + menuHost.addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.STARTED) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt index c3cd1b3db..03dfc27f3 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsPlayerFragment.kt @@ -48,6 +48,7 @@ import code.name.monkey.retromusic.db.PlaylistEntity import code.name.monkey.retromusic.db.toSongEntity import code.name.monkey.retromusic.dialogs.* import code.name.monkey.retromusic.extensions.* +import code.name.monkey.retromusic.fragments.LibraryViewModel import code.name.monkey.retromusic.fragments.NowPlayingScreen import code.name.monkey.retromusic.fragments.ReloadType import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment @@ -66,11 +67,17 @@ import kotlinx.coroutines.Dispatchers.Main import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.koin.android.ext.android.get +import org.koin.androidx.viewmodel.ext.android.sharedViewModel import kotlin.math.abs -abstract class AbsPlayerFragment(@LayoutRes layout: Int) : AbsMainActivityFragment(layout), +abstract class AbsPlayerFragment(@LayoutRes layout: Int) : AbsMusicServiceFragment(layout), Toolbar.OnMenuItemClickListener, IPaletteColorHolder, PlayerAlbumCoverFragment.Callbacks { + val libraryViewModel: LibraryViewModel by sharedViewModel() + + val mainActivity: MainActivity + get() = activity as MainActivity + private var playerAlbumCoverFragment: PlayerAlbumCoverFragment? = null override fun onMenuItemClick( diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewFragment.kt index c36ddc65c..a3004be8b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/base/AbsRecyclerViewFragment.kt @@ -199,13 +199,11 @@ abstract class AbsRecyclerViewFragment, LM : Recycle binding.appBarLayout.setExpanded(true, true) } - override fun onPrepareOptionsMenu(menu: Menu) { - super.onPrepareOptionsMenu(menu) + override fun onPrepareMenu(menu: Menu) { ToolbarContentTintHelper.handleOnPrepareOptionsMenu(requireActivity(), toolbar) } - override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { - super.onCreateOptionsMenu(menu, inflater) + override fun onCreateMenu(menu: Menu, inflater: MenuInflater) { inflater.inflate(R.menu.menu_main, menu) ToolbarContentTintHelper.handleOnCreateOptionsMenu( requireContext(), @@ -215,7 +213,7 @@ abstract class AbsRecyclerViewFragment, LM : Recycle ) } - override fun onOptionsItemSelected(item: MenuItem): Boolean { + override fun onMenuItemSelected(item: MenuItem): Boolean { when (item.itemId) { R.id.action_settings -> findNavController().navigate( R.id.settingsActivity, @@ -231,7 +229,7 @@ abstract class AbsRecyclerViewFragment, LM : Recycle "ShowCreatePlaylistDialog" ) } - return super.onOptionsItemSelected(item) + return false } override fun onDestroyView() { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt index a1db231c7..d1a70aeb3 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/folder/FoldersFragment.kt @@ -99,8 +99,6 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder), override fun onViewCreated(view: View, savedInstanceState: Bundle?) { _binding = FragmentFolderBinding.bind(view) - - setHasOptionsMenu(true) mainActivity.addMusicServiceEventListener(libraryViewModel) mainActivity.setSupportActionBar(binding.toolbar) mainActivity.supportActionBar?.title = null @@ -135,7 +133,6 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder), override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - setHasOptionsMenu(true) if (savedInstanceState == null) { switchToFileAdapter() setCrumb( @@ -334,13 +331,11 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder), } } - override fun onPrepareOptionsMenu(menu: Menu) { - super.onPrepareOptionsMenu(menu) + override fun onPrepareMenu(menu: Menu) { ToolbarContentTintHelper.handleOnPrepareOptionsMenu(requireActivity(), binding.toolbar) } - override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { - super.onCreateOptionsMenu(menu, inflater) + override fun onCreateMenu(menu: Menu, inflater: MenuInflater) { menu.add(0, R.id.action_scan, 0, R.string.scan_media) .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER) menu.add(0, R.id.action_go_to_start_directory, 1, R.string.action_go_to_start_directory) @@ -357,7 +352,7 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder), ) } - override fun onOptionsItemSelected(item: MenuItem): Boolean { + override fun onMenuItemSelected(item: MenuItem): Boolean { when (item.itemId) { R.id.action_go_to_start_directory -> { setCrumb( @@ -386,7 +381,7 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder), return true } } - return super.onOptionsItemSelected(item) + return false } override fun onQueueChanged() { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenreDetailsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenreDetailsFragment.kt index 06f94065b..64b4aefa2 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenreDetailsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenreDetailsFragment.kt @@ -53,7 +53,6 @@ class GenreDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playlist_ enterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true).addTarget(view) returnTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false) _binding = FragmentPlaylistDetailBinding.bind(view) - setHasOptionsMenu(true) mainActivity.addMusicServiceEventListener(detailsViewModel) mainActivity.setSupportActionBar(binding.toolbar) binding.container.transitionName = "genre" @@ -107,12 +106,11 @@ class GenreDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playlist_ binding.recyclerView.setPadding(0, 0, 0, height) } - override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { - super.onCreateOptionsMenu(menu, inflater) + override fun onCreateMenu(menu: Menu, inflater: MenuInflater) { inflater.inflate(R.menu.menu_genre_detail, menu) } - override fun onOptionsItemSelected(item: MenuItem): Boolean { + override fun onMenuItemSelected(item: MenuItem): Boolean { return GenreMenuHelper.handleMenuClick(requireActivity(), genre, item) } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt index 3064be556..b1731ed13 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/genres/GenresFragment.kt @@ -60,8 +60,8 @@ GenresFragment : AbsRecyclerViewFragment(), return GenreAdapter(requireActivity(), dataSet, this) } - override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { - super.onCreateOptionsMenu(menu, inflater) + override fun onCreateMenu(menu: Menu, inflater: MenuInflater) { + super.onCreateMenu(menu, inflater) menu.removeItem(R.id.action_grid_size) menu.removeItem(R.id.action_layout_type) menu.removeItem(R.id.action_sort_order) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt index dcdd36e7e..0992eb06a 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/home/HomeFragment.kt @@ -189,8 +189,7 @@ class HomeFragment : binding.actionShuffle.elevatedAccentColor() } - override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { - super.onCreateOptionsMenu(menu, inflater) + override fun onCreateMenu(menu: Menu, inflater: MenuInflater) { inflater.inflate(R.menu.menu_main, menu) menu.removeItem(R.id.action_grid_size) menu.removeItem(R.id.action_layout_type) @@ -275,7 +274,7 @@ class HomeFragment : } } - override fun onOptionsItemSelected(item: MenuItem): Boolean { + override fun onMenuItemSelected(item: MenuItem): Boolean { when (item.itemId) { R.id.action_settings -> findNavController().navigate( R.id.settingsActivity, @@ -291,11 +290,11 @@ class HomeFragment : "ShowCreatePlaylistDialog" ) } - return super.onOptionsItemSelected(item) + return false } - override fun onPrepareOptionsMenu(menu: Menu) { - super.onPrepareOptionsMenu(menu) + override fun onPrepareMenu(menu: Menu) { + super.onPrepareMenu(menu) ToolbarContentTintHelper.handleOnPrepareOptionsMenu(requireActivity(), binding.toolbar) } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/library/LibraryFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/library/LibraryFragment.kt index 5dbd00759..41f465fd1 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/library/LibraryFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/library/LibraryFragment.kt @@ -48,7 +48,6 @@ class LibraryFragment : AbsMainActivityFragment(R.layout.fragment_library) { override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - setHasOptionsMenu(true) mainActivity.setBottomNavVisibility(true) mainActivity.setSupportActionBar(binding.toolbar) mainActivity.supportActionBar?.title = null @@ -87,13 +86,11 @@ class LibraryFragment : AbsMainActivityFragment(R.layout.fragment_library) { } } - override fun onPrepareOptionsMenu(menu: Menu) { - super.onPrepareOptionsMenu(menu) + override fun onPrepareMenu(menu: Menu) { ToolbarContentTintHelper.handleOnPrepareOptionsMenu(requireActivity(), binding.toolbar) } - override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { - super.onCreateOptionsMenu(menu, inflater) + override fun onCreateMenu(menu: Menu, inflater: MenuInflater) { inflater.inflate(R.menu.menu_main, menu) ToolbarContentTintHelper.handleOnCreateOptionsMenu( requireContext(), @@ -105,7 +102,7 @@ class LibraryFragment : AbsMainActivityFragment(R.layout.fragment_library) { CastButtonFactory.setUpMediaRouteButton(requireContext(), menu, R.id.action_cast) } - override fun onOptionsItemSelected(item: MenuItem): Boolean { + override fun onMenuItemSelected(item: MenuItem): Boolean { when (item.itemId) { R.id.action_settings -> findNavController().navigate( R.id.settingsActivity, @@ -121,7 +118,7 @@ class LibraryFragment : AbsMainActivityFragment(R.layout.fragment_library) { "ShowCreatePlaylistDialog" ) } - return super.onOptionsItemSelected(item) + return false } override fun onDestroyView() { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/other/DetailListFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/other/DetailListFragment.kt index e712410fc..c5d0d87c5 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/other/DetailListFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/other/DetailListFragment.kt @@ -64,11 +64,6 @@ class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_de private val binding get() = _binding!! private var showClearHistoryOption = false - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setHasOptionsMenu(true) - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) _binding = FragmentPlaylistDetailBinding.bind(view) @@ -302,16 +297,14 @@ class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_de return cab as AttachedCab } - override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { - super.onCreateOptionsMenu(menu, inflater) + override fun onCreateMenu(menu: Menu, inflater: MenuInflater) { inflater.inflate(R.menu.menu_clear_history, menu) if (showClearHistoryOption) { menu.findItem(R.id.action_clear_history).isVisible = true // Show Clear History option } } - override fun onOptionsItemSelected(item: MenuItem): Boolean { - + override fun onMenuItemSelected(item: MenuItem): Boolean { when (item.itemId) { R.id.action_clear_history -> { if (binding.recyclerView.adapter?.itemCount!! > 0) { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/other/LyricsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/other/LyricsFragment.kt index 099c0b9b4..d1ce9c693 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/other/LyricsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/other/LyricsFragment.kt @@ -41,6 +41,7 @@ import code.name.monkey.retromusic.databinding.FragmentLyricsBinding import code.name.monkey.retromusic.databinding.FragmentNormalLyricsBinding import code.name.monkey.retromusic.databinding.FragmentSyncedLyricsBinding import code.name.monkey.retromusic.extensions.* +import code.name.monkey.retromusic.fragments.base.AbsMainActivityFragment import code.name.monkey.retromusic.fragments.base.AbsMusicServiceFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper @@ -51,9 +52,7 @@ import code.name.monkey.retromusic.util.FileUtils import code.name.monkey.retromusic.util.LyricUtil import code.name.monkey.retromusic.util.UriUtil import com.afollestad.materialdialogs.input.input -import com.google.android.material.color.MaterialColors import com.google.android.material.tabs.TabLayoutMediator -import com.google.android.material.transition.platform.MaterialContainerTransform import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import org.jaudiotagger.audio.AudioFileIO @@ -62,15 +61,12 @@ import java.io.File import java.io.FileOutputStream import java.util.* -class LyricsFragment : AbsMusicServiceFragment(R.layout.fragment_lyrics) { +class LyricsFragment : AbsMainActivityFragment(R.layout.fragment_lyrics) { private var _binding: FragmentLyricsBinding? = null private val binding get() = _binding!! private lateinit var song: Song - val mainActivity: MainActivity - get() = activity as MainActivity - private lateinit var lyricsSectionsAdapter: LyricsSectionsAdapter private val googleSearchLrcUrl: String @@ -90,16 +86,6 @@ class LyricsFragment : AbsMusicServiceFragment(R.layout.fragment_lyrics) { return baseUrl } - private fun buildContainerTransform(): MaterialContainerTransform { - val transform = MaterialContainerTransform() - transform.setAllContainerColors( - MaterialColors.getColor(requireView().findViewById(R.id.container), R.attr.colorSurface) - ) - transform.addTarget(R.id.container) - transform.duration = 300 - return transform - } - private lateinit var normalLyricsLauncher: ActivityResultLauncher private lateinit var newSyncedLyricsLauncher: ActivityResultLauncher private lateinit var editSyncedLyricsLauncher: ActivityResultLauncher @@ -139,7 +125,6 @@ class LyricsFragment : AbsMusicServiceFragment(R.layout.fragment_lyrics) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - setHasOptionsMenu(true) updateTitleSong() enterTransition = Fade() exitTransition = Fade() @@ -204,7 +189,7 @@ class LyricsFragment : AbsMusicServiceFragment(R.layout.fragment_lyrics) { requireActivity().window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } - override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { + override fun onCreateMenu(menu: Menu, inflater: MenuInflater) { inflater.inflate(R.menu.menu_search, menu) ToolbarContentTintHelper.handleOnCreateOptionsMenu( requireContext(), @@ -212,14 +197,9 @@ class LyricsFragment : AbsMusicServiceFragment(R.layout.fragment_lyrics) { menu, ATHToolbarActivity.getToolbarBackgroundColor(binding.toolbar) ) - return super.onCreateOptionsMenu(menu, inflater) } - override fun onOptionsItemSelected(item: MenuItem): Boolean { - if (item.itemId == android.R.id.home) { - findNavController().navigateUp() - return true - } + override fun onMenuItemSelected(item: MenuItem): Boolean { if (item.itemId == R.id.action_search) { openUrl(when (binding.lyricsPager.currentItem) { 0 -> syairSearchLrcUrl @@ -228,7 +208,7 @@ class LyricsFragment : AbsMusicServiceFragment(R.layout.fragment_lyrics) { } ) } - return super.onOptionsItemSelected(item) + return false } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/other/UserInfoFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/other/UserInfoFragment.kt index 3a486df02..915e34116 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/other/UserInfoFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/other/UserInfoFragment.kt @@ -20,7 +20,6 @@ import android.graphics.Color import android.net.Uri import android.os.Bundle import android.view.LayoutInflater -import android.view.MenuItem import android.view.View import android.view.ViewGroup import androidx.activity.result.ActivityResult @@ -167,13 +166,6 @@ class UserInfoFragment : Fragment() { .into(binding.userImage) } - override fun onOptionsItemSelected(item: MenuItem): Boolean { - if (item.itemId == android.R.id.home) { - findNavController().navigateUp() - } - return super.onOptionsItemSelected(item) - } - private fun selectBannerImage() { ImagePicker.with(this) .compress(1440) @@ -309,10 +301,4 @@ class UserInfoFragment : Fragment() { super.onDestroyView() _binding = null } - - - companion object { - private const val PICK_IMAGE_REQUEST = 9002 - private const val PICK_BANNER_REQUEST = 9004 - } } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt index e49e5ad7d..51cfe3308 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/player/full/FullPlaybackControlsFragment.kt @@ -257,14 +257,12 @@ class FullPlaybackControlsFragment : private fun toggleFavorite(song: Song) { lifecycleScope.launch(Dispatchers.IO) { val playlist: PlaylistEntity = libraryViewModel.favoritePlaylist() - if (playlist != null) { - val songEntity = song.toSongEntity(playlist.playListId) - val isFavorite = libraryViewModel.isFavoriteSong(songEntity).isNotEmpty() - if (isFavorite) { - libraryViewModel.removeSongFromPlaylist(songEntity) - } else { - libraryViewModel.insertSongs(listOf(song.toSongEntity(playlist.playListId))) - } + val songEntity = song.toSongEntity(playlist.playListId) + val isFavorite = libraryViewModel.isFavoriteSong(songEntity).isNotEmpty() + if (isFavorite) { + libraryViewModel.removeSongFromPlaylist(songEntity) + } else { + libraryViewModel.insertSongs(listOf(song.toSongEntity(playlist.playListId))) } libraryViewModel.forceReload(ReloadType.Playlists) requireContext().sendBroadcast(Intent(MusicService.FAVORITE_STATE_CHANGED)) diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistDetailsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistDetailsFragment.kt index e76ebb565..aa7f71bc1 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistDetailsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistDetailsFragment.kt @@ -69,7 +69,6 @@ class PlaylistDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playli _binding = FragmentPlaylistDetailBinding.bind(view) enterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true).addTarget(view) returnTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false) - setHasOptionsMenu(true) mainActivity.setSupportActionBar(binding.toolbar) binding.container.transitionName = "playlist" playlist = arguments.extraPlaylist @@ -122,12 +121,11 @@ class PlaylistDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playli }) } - override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { - super.onCreateOptionsMenu(menu, inflater) + override fun onCreateMenu(menu: Menu, inflater: MenuInflater) { inflater.inflate(R.menu.menu_playlist_detail, menu) } - override fun onOptionsItemSelected(item: MenuItem): Boolean { + override fun onMenuItemSelected(item: MenuItem): Boolean { return PlaylistMenuHelper.handleMenuClick(requireActivity(), playlist, item) } @@ -175,16 +173,6 @@ class PlaylistDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playli _binding = null } - private fun handleBackPress(): Boolean { - cab?.let { - if (it.isActive()) { - it.destroy() - return true - } - } - return false - } - private var cab: AttachedCab? = null override fun openCab(menuRes: Int, callback: ICabCallback): AttachedCab { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistsFragment.kt index fbc3948f5..be9a10b8a 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/playlists/PlaylistsFragment.kt @@ -71,8 +71,8 @@ class PlaylistsFragment : ) } - override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { - super.onCreateOptionsMenu(menu, inflater) + override fun onCreateMenu(menu: Menu, inflater: MenuInflater) { + super.onCreateMenu(menu, inflater) val gridSizeItem: MenuItem = menu.findItem(R.id.action_grid_size) if (RetroUtil.isLandscape()) { gridSizeItem.setTitle(R.string.action_grid_size_land) @@ -88,14 +88,14 @@ class PlaylistsFragment : CastButtonFactory.setUpMediaRouteButton(requireContext(), menu, R.id.action_cast) } - override fun onOptionsItemSelected(item: MenuItem): Boolean { + override fun onMenuItemSelected(item: MenuItem): Boolean { if (handleGridSizeMenuItem(item)) { return true } if (handleSortOrderMenuItem(item)) { return true } - return super.onOptionsItemSelected(item) + return super.onMenuItemSelected(item) } private fun setupGridSizeMenu(gridSizeMenu: SubMenu) { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/search/SearchFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/search/SearchFragment.kt index 5b7c25d76..848f32f26 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/search/SearchFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/search/SearchFragment.kt @@ -20,8 +20,7 @@ import android.content.Intent import android.content.res.ColorStateList import android.os.Bundle import android.speech.RecognizerIntent -import android.view.View -import android.view.ViewGroup +import android.view.* import android.view.inputmethod.InputMethodManager import androidx.core.content.getSystemService import androidx.core.view.* @@ -246,6 +245,10 @@ class SearchFragment : AbsMainActivityFragment(R.layout.fragment_search), override fun onCheckedChanged(group: ChipGroup, checkedIds: MutableList) { search(binding.searchView.text.toString()) } + + override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {} + + override fun onMenuItemSelected(menuItem: MenuItem) = false } enum class Filter { diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt index acbd45923..4445d1e21 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt @@ -125,8 +125,8 @@ class SongsFragment : AbsRecyclerViewCustomGridSizeFragment