Use MenuProvider to inflate & handle menus in fragments
This commit is contained in:
parent
c5a25c200c
commit
5216a11170
23 changed files with 92 additions and 153 deletions
|
@ -96,6 +96,7 @@ class MainActivity : AbsCastActivity(), OnSharedPreferenceChangeListener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
navController.addOnDestinationChangedListener { _, destination, _ ->
|
navController.addOnDestinationChangedListener { _, destination, _ ->
|
||||||
|
val start = System.currentTimeMillis()
|
||||||
if (destination.id == navGraph.startDestinationId) {
|
if (destination.id == navGraph.startDestinationId) {
|
||||||
currentFragment(R.id.fragment_container)?.enterTransition = null
|
currentFragment(R.id.fragment_container)?.enterTransition = null
|
||||||
}
|
}
|
||||||
|
@ -116,6 +117,7 @@ class MainActivity : AbsCastActivity(), OnSharedPreferenceChangeListener {
|
||||||
animate = true
|
animate = true
|
||||||
) // Hide Bottom Navigation Bar
|
) // Hide Bottom Navigation Bar
|
||||||
}
|
}
|
||||||
|
showToast("Time : ${System.currentTimeMillis() - start}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,6 @@ import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.appcompat.content.res.AppCompatResources
|
import androidx.appcompat.content.res.AppCompatResources
|
||||||
import androidx.core.content.getSystemService
|
import androidx.core.content.getSystemService
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.FragmentManager
|
|
||||||
import androidx.navigation.fragment.NavHostFragment
|
import androidx.navigation.fragment.NavHostFragment
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||||
import com.google.android.material.appbar.MaterialToolbar
|
import com.google.android.material.appbar.MaterialToolbar
|
||||||
|
@ -58,12 +57,6 @@ inline fun <reified T : Any> Fragment.extraNotNull(key: String, default: T? = nu
|
||||||
requireNotNull(if (value is T) value else default) { key }
|
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? {
|
fun AppCompatActivity.currentFragment(navHostId: Int): Fragment? {
|
||||||
val navHostFragment: NavHostFragment =
|
val navHostFragment: NavHostFragment =
|
||||||
supportFragmentManager.findFragmentById(navHostId) as NavHostFragment
|
supportFragmentManager.findFragmentById(navHostId) as NavHostFragment
|
||||||
|
|
|
@ -112,7 +112,6 @@ class AlbumDetailsFragment : AbsMainActivityFragment(R.layout.fragment_album_det
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
_binding = FragmentAlbumDetailsBinding.bind(view)
|
_binding = FragmentAlbumDetailsBinding.bind(view)
|
||||||
setHasOptionsMenu(true)
|
|
||||||
mainActivity.addMusicServiceEventListener(detailsViewModel)
|
mainActivity.addMusicServiceEventListener(detailsViewModel)
|
||||||
mainActivity.setSupportActionBar(binding.toolbar)
|
mainActivity.setSupportActionBar(binding.toolbar)
|
||||||
|
|
||||||
|
@ -347,8 +346,7 @@ class AlbumDetailsFragment : AbsMainActivityFragment(R.layout.fragment_album_det
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||||
super.onCreateOptionsMenu(menu, inflater)
|
|
||||||
inflater.inflate(R.menu.menu_album_detail, menu)
|
inflater.inflate(R.menu.menu_album_detail, menu)
|
||||||
val sortOrder = menu.findItem(R.id.action_sort_order)
|
val sortOrder = menu.findItem(R.id.action_sort_order)
|
||||||
setUpSortOrderMenu(sortOrder.subMenu)
|
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)
|
return handleSortOrderMenuItem(item)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -158,8 +158,8 @@ class AlbumsFragment : AbsRecyclerViewCustomGridSizeFragment<AlbumAdapter, GridL
|
||||||
reenterTransition = null
|
reenterTransition = null
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||||
super.onCreateOptionsMenu(menu, inflater)
|
super.onCreateMenu(menu, inflater)
|
||||||
val gridSizeItem: MenuItem = menu.findItem(R.id.action_grid_size)
|
val gridSizeItem: MenuItem = menu.findItem(R.id.action_grid_size)
|
||||||
if (RetroUtil.isLandscape()) {
|
if (RetroUtil.isLandscape()) {
|
||||||
gridSizeItem.setTitle(R.string.action_grid_size_land)
|
gridSizeItem.setTitle(R.string.action_grid_size_land)
|
||||||
|
@ -267,7 +267,7 @@ class AlbumsFragment : AbsRecyclerViewCustomGridSizeFragment<AlbumAdapter, GridL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onMenuItemSelected(item: MenuItem): Boolean {
|
||||||
if (handleGridSizeMenuItem(item)) {
|
if (handleGridSizeMenuItem(item)) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
@ -277,7 +277,7 @@ class AlbumsFragment : AbsRecyclerViewCustomGridSizeFragment<AlbumAdapter, GridL
|
||||||
if (handleSortOrderMenuItem(item)) {
|
if (handleSortOrderMenuItem(item)) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
return super.onOptionsItemSelected(item)
|
return super.onMenuItemSelected(item)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleSortOrderMenuItem(
|
private fun handleSortOrderMenuItem(
|
||||||
|
|
|
@ -84,7 +84,6 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
_binding = FragmentArtistDetailsBinding.bind(view)
|
_binding = FragmentArtistDetailsBinding.bind(view)
|
||||||
setHasOptionsMenu(true)
|
|
||||||
mainActivity.addMusicServiceEventListener(detailsViewModel)
|
mainActivity.addMusicServiceEventListener(detailsViewModel)
|
||||||
mainActivity.setSupportActionBar(binding.toolbar)
|
mainActivity.setSupportActionBar(binding.toolbar)
|
||||||
binding.toolbar.title = null
|
binding.toolbar.title = null
|
||||||
|
@ -245,7 +244,7 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onMenuItemSelected(item: MenuItem): Boolean {
|
||||||
return handleSortOrderMenuItem(item)
|
return handleSortOrderMenuItem(item)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -295,18 +294,18 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm
|
||||||
PopupMenu(requireContext(), binding.fragmentArtistContent.songSortOrder).apply {
|
PopupMenu(requireContext(), binding.fragmentArtistContent.songSortOrder).apply {
|
||||||
inflate(R.menu.menu_artist_song_sort_order)
|
inflate(R.menu.menu_artist_song_sort_order)
|
||||||
setUpSortOrderMenu(menu)
|
setUpSortOrderMenu(menu)
|
||||||
setOnMenuItemClickListener { menuItem ->
|
setOnMenuItemClickListener { item ->
|
||||||
val sortOrder = when (menuItem.itemId) {
|
val sortOrder = when (item.itemId) {
|
||||||
R.id.action_sort_order_title -> SortOrder.ArtistSongSortOrder.SONG_A_Z
|
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_title_desc -> SortOrder.ArtistSongSortOrder.SONG_Z_A
|
||||||
R.id.action_sort_order_album -> SortOrder.ArtistSongSortOrder.SONG_ALBUM
|
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_year -> SortOrder.ArtistSongSortOrder.SONG_YEAR
|
||||||
R.id.action_sort_order_song_duration -> SortOrder.ArtistSongSortOrder.SONG_DURATION
|
R.id.action_sort_order_song_duration -> SortOrder.ArtistSongSortOrder.SONG_DURATION
|
||||||
else -> {
|
else -> {
|
||||||
throw IllegalArgumentException("invalid ${menuItem.title}")
|
throw IllegalArgumentException("invalid ${item.title}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
menuItem.isChecked = true
|
item.isChecked = true
|
||||||
setSaveSortOrder(sortOrder)
|
setSaveSortOrder(sortOrder)
|
||||||
return@setOnMenuItemClickListener true
|
return@setOnMenuItemClickListener true
|
||||||
}
|
}
|
||||||
|
@ -322,15 +321,17 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm
|
||||||
|
|
||||||
private fun setUpSortOrderMenu(sortOrder: Menu) {
|
private fun setUpSortOrderMenu(sortOrder: Menu) {
|
||||||
when (savedSongSortOrder) {
|
when (savedSongSortOrder) {
|
||||||
SortOrder.ArtistSongSortOrder.SONG_A_Z -> sortOrder.findItem(R.id.action_sort_order_title).isChecked = true
|
SortOrder.ArtistSongSortOrder.SONG_A_Z -> sortOrder.findItem(R.id.action_sort_order_title).isChecked =
|
||||||
SortOrder.ArtistSongSortOrder.SONG_Z_A -> sortOrder.findItem(R.id.action_sort_order_title_desc).isChecked = true
|
true
|
||||||
|
SortOrder.ArtistSongSortOrder.SONG_Z_A -> sortOrder.findItem(R.id.action_sort_order_title_desc).isChecked =
|
||||||
|
true
|
||||||
SortOrder.ArtistSongSortOrder.SONG_ALBUM ->
|
SortOrder.ArtistSongSortOrder.SONG_ALBUM ->
|
||||||
sortOrder.findItem(R.id.action_sort_order_album).isChecked = true
|
sortOrder.findItem(R.id.action_sort_order_album).isChecked = true
|
||||||
SortOrder.ArtistSongSortOrder.SONG_YEAR ->
|
SortOrder.ArtistSongSortOrder.SONG_YEAR ->
|
||||||
sortOrder.findItem(R.id.action_sort_order_year).isChecked = true
|
sortOrder.findItem(R.id.action_sort_order_year).isChecked = true
|
||||||
SortOrder.ArtistSongSortOrder.SONG_DURATION ->
|
SortOrder.ArtistSongSortOrder.SONG_DURATION ->
|
||||||
sortOrder.findItem(R.id.action_sort_order_song_duration).isChecked = true
|
sortOrder.findItem(R.id.action_sort_order_song_duration).isChecked = true
|
||||||
else-> {
|
else -> {
|
||||||
throw IllegalArgumentException("invalid $savedSongSortOrder")
|
throw IllegalArgumentException("invalid $savedSongSortOrder")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -352,8 +353,7 @@ abstract class AbsArtistDetailsFragment : AbsMainActivityFragment(R.layout.fragm
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||||
super.onCreateOptionsMenu(menu, inflater)
|
|
||||||
inflater.inflate(R.menu.menu_artist_detail, menu)
|
inflater.inflate(R.menu.menu_artist_detail, menu)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -168,8 +168,8 @@ class ArtistsFragment : AbsRecyclerViewCustomGridSizeFragment<ArtistAdapter, Gri
|
||||||
reenterTransition = null
|
reenterTransition = null
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||||
super.onCreateOptionsMenu(menu, inflater)
|
super.onCreateMenu(menu, inflater)
|
||||||
val gridSizeItem: MenuItem = menu.findItem(R.id.action_grid_size)
|
val gridSizeItem: MenuItem = menu.findItem(R.id.action_grid_size)
|
||||||
if (RetroUtil.isLandscape()) {
|
if (RetroUtil.isLandscape()) {
|
||||||
gridSizeItem.setTitle(R.string.action_grid_size_land)
|
gridSizeItem.setTitle(R.string.action_grid_size_land)
|
||||||
|
@ -261,7 +261,7 @@ class ArtistsFragment : AbsRecyclerViewCustomGridSizeFragment<ArtistAdapter, Gri
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onMenuItemSelected(item: MenuItem): Boolean {
|
||||||
if (handleGridSizeMenuItem(item)) {
|
if (handleGridSizeMenuItem(item)) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
@ -274,7 +274,7 @@ class ArtistsFragment : AbsRecyclerViewCustomGridSizeFragment<ArtistAdapter, Gri
|
||||||
if (handleAlbumArtistMenu(item)) {
|
if (handleAlbumArtistMenu(item)) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
return super.onOptionsItemSelected(item)
|
return super.onMenuItemSelected(item)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleAlbumArtistMenu(item: MenuItem): Boolean {
|
private fun handleAlbumArtistMenu(item: MenuItem): Boolean {
|
||||||
|
|
|
@ -116,8 +116,8 @@ class BackupFragment : Fragment(R.layout.fragment_backup), BackupAdapter.BackupC
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("CheckResult")
|
@SuppressLint("CheckResult")
|
||||||
override fun onBackupMenuClicked(file: File, menuItem: MenuItem): Boolean {
|
override fun onBackupMenuClicked(file: File, item: MenuItem): Boolean {
|
||||||
when (menuItem.itemId) {
|
when (item.itemId) {
|
||||||
R.id.action_delete -> {
|
R.id.action_delete -> {
|
||||||
try {
|
try {
|
||||||
file.delete()
|
file.delete()
|
||||||
|
|
|
@ -15,21 +15,25 @@
|
||||||
package code.name.monkey.retromusic.fragments.base
|
package code.name.monkey.retromusic.fragments.base
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.view.View
|
||||||
import androidx.annotation.LayoutRes
|
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.activities.MainActivity
|
||||||
import code.name.monkey.retromusic.extensions.setTaskDescriptionColorAuto
|
|
||||||
import code.name.monkey.retromusic.fragments.LibraryViewModel
|
import code.name.monkey.retromusic.fragments.LibraryViewModel
|
||||||
import org.koin.androidx.viewmodel.ext.android.sharedViewModel
|
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 libraryViewModel: LibraryViewModel by sharedViewModel()
|
||||||
|
|
||||||
val mainActivity: MainActivity
|
val mainActivity: MainActivity
|
||||||
get() = activity as MainActivity
|
get() = activity as MainActivity
|
||||||
|
|
||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onActivityCreated(savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
setHasOptionsMenu(true)
|
val menuHost: MenuHost = requireActivity()
|
||||||
mainActivity.setTaskDescriptionColorAuto()
|
menuHost.addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.STARTED)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,6 +48,7 @@ import code.name.monkey.retromusic.db.PlaylistEntity
|
||||||
import code.name.monkey.retromusic.db.toSongEntity
|
import code.name.monkey.retromusic.db.toSongEntity
|
||||||
import code.name.monkey.retromusic.dialogs.*
|
import code.name.monkey.retromusic.dialogs.*
|
||||||
import code.name.monkey.retromusic.extensions.*
|
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.NowPlayingScreen
|
||||||
import code.name.monkey.retromusic.fragments.ReloadType
|
import code.name.monkey.retromusic.fragments.ReloadType
|
||||||
import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment
|
import code.name.monkey.retromusic.fragments.player.PlayerAlbumCoverFragment
|
||||||
|
@ -66,11 +67,17 @@ import kotlinx.coroutines.Dispatchers.Main
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import org.koin.android.ext.android.get
|
import org.koin.android.ext.android.get
|
||||||
|
import org.koin.androidx.viewmodel.ext.android.sharedViewModel
|
||||||
import kotlin.math.abs
|
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 {
|
Toolbar.OnMenuItemClickListener, IPaletteColorHolder, PlayerAlbumCoverFragment.Callbacks {
|
||||||
|
|
||||||
|
val libraryViewModel: LibraryViewModel by sharedViewModel()
|
||||||
|
|
||||||
|
val mainActivity: MainActivity
|
||||||
|
get() = activity as MainActivity
|
||||||
|
|
||||||
private var playerAlbumCoverFragment: PlayerAlbumCoverFragment? = null
|
private var playerAlbumCoverFragment: PlayerAlbumCoverFragment? = null
|
||||||
|
|
||||||
override fun onMenuItemClick(
|
override fun onMenuItemClick(
|
||||||
|
|
|
@ -199,13 +199,11 @@ abstract class AbsRecyclerViewFragment<A : RecyclerView.Adapter<*>, LM : Recycle
|
||||||
binding.appBarLayout.setExpanded(true, true)
|
binding.appBarLayout.setExpanded(true, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPrepareOptionsMenu(menu: Menu) {
|
override fun onPrepareMenu(menu: Menu) {
|
||||||
super.onPrepareOptionsMenu(menu)
|
|
||||||
ToolbarContentTintHelper.handleOnPrepareOptionsMenu(requireActivity(), toolbar)
|
ToolbarContentTintHelper.handleOnPrepareOptionsMenu(requireActivity(), toolbar)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||||
super.onCreateOptionsMenu(menu, inflater)
|
|
||||||
inflater.inflate(R.menu.menu_main, menu)
|
inflater.inflate(R.menu.menu_main, menu)
|
||||||
ToolbarContentTintHelper.handleOnCreateOptionsMenu(
|
ToolbarContentTintHelper.handleOnCreateOptionsMenu(
|
||||||
requireContext(),
|
requireContext(),
|
||||||
|
@ -215,7 +213,7 @@ abstract class AbsRecyclerViewFragment<A : RecyclerView.Adapter<*>, LM : Recycle
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onMenuItemSelected(item: MenuItem): Boolean {
|
||||||
when (item.itemId) {
|
when (item.itemId) {
|
||||||
R.id.action_settings -> findNavController().navigate(
|
R.id.action_settings -> findNavController().navigate(
|
||||||
R.id.settingsActivity,
|
R.id.settingsActivity,
|
||||||
|
@ -231,7 +229,7 @@ abstract class AbsRecyclerViewFragment<A : RecyclerView.Adapter<*>, LM : Recycle
|
||||||
"ShowCreatePlaylistDialog"
|
"ShowCreatePlaylistDialog"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
return super.onOptionsItemSelected(item)
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroyView() {
|
override fun onDestroyView() {
|
||||||
|
|
|
@ -99,8 +99,6 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
_binding = FragmentFolderBinding.bind(view)
|
_binding = FragmentFolderBinding.bind(view)
|
||||||
|
|
||||||
setHasOptionsMenu(true)
|
|
||||||
mainActivity.addMusicServiceEventListener(libraryViewModel)
|
mainActivity.addMusicServiceEventListener(libraryViewModel)
|
||||||
mainActivity.setSupportActionBar(binding.toolbar)
|
mainActivity.setSupportActionBar(binding.toolbar)
|
||||||
mainActivity.supportActionBar?.title = null
|
mainActivity.supportActionBar?.title = null
|
||||||
|
@ -135,7 +133,6 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
|
||||||
|
|
||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
super.onActivityCreated(savedInstanceState)
|
super.onActivityCreated(savedInstanceState)
|
||||||
setHasOptionsMenu(true)
|
|
||||||
if (savedInstanceState == null) {
|
if (savedInstanceState == null) {
|
||||||
switchToFileAdapter()
|
switchToFileAdapter()
|
||||||
setCrumb(
|
setCrumb(
|
||||||
|
@ -334,13 +331,11 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPrepareOptionsMenu(menu: Menu) {
|
override fun onPrepareMenu(menu: Menu) {
|
||||||
super.onPrepareOptionsMenu(menu)
|
|
||||||
ToolbarContentTintHelper.handleOnPrepareOptionsMenu(requireActivity(), binding.toolbar)
|
ToolbarContentTintHelper.handleOnPrepareOptionsMenu(requireActivity(), binding.toolbar)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||||
super.onCreateOptionsMenu(menu, inflater)
|
|
||||||
menu.add(0, R.id.action_scan, 0, R.string.scan_media)
|
menu.add(0, R.id.action_scan, 0, R.string.scan_media)
|
||||||
.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER)
|
.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER)
|
||||||
menu.add(0, R.id.action_go_to_start_directory, 1, R.string.action_go_to_start_directory)
|
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) {
|
when (item.itemId) {
|
||||||
R.id.action_go_to_start_directory -> {
|
R.id.action_go_to_start_directory -> {
|
||||||
setCrumb(
|
setCrumb(
|
||||||
|
@ -386,7 +381,7 @@ class FoldersFragment : AbsMainActivityFragment(R.layout.fragment_folder),
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return super.onOptionsItemSelected(item)
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onQueueChanged() {
|
override fun onQueueChanged() {
|
||||||
|
|
|
@ -53,7 +53,6 @@ class GenreDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playlist_
|
||||||
enterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true).addTarget(view)
|
enterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true).addTarget(view)
|
||||||
returnTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false)
|
returnTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false)
|
||||||
_binding = FragmentPlaylistDetailBinding.bind(view)
|
_binding = FragmentPlaylistDetailBinding.bind(view)
|
||||||
setHasOptionsMenu(true)
|
|
||||||
mainActivity.addMusicServiceEventListener(detailsViewModel)
|
mainActivity.addMusicServiceEventListener(detailsViewModel)
|
||||||
mainActivity.setSupportActionBar(binding.toolbar)
|
mainActivity.setSupportActionBar(binding.toolbar)
|
||||||
binding.container.transitionName = "genre"
|
binding.container.transitionName = "genre"
|
||||||
|
@ -107,12 +106,11 @@ class GenreDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playlist_
|
||||||
binding.recyclerView.setPadding(0, 0, 0, height)
|
binding.recyclerView.setPadding(0, 0, 0, height)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||||
super.onCreateOptionsMenu(menu, inflater)
|
|
||||||
inflater.inflate(R.menu.menu_genre_detail, menu)
|
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)
|
return GenreMenuHelper.handleMenuClick(requireActivity(), genre, item)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -60,8 +60,8 @@ GenresFragment : AbsRecyclerViewFragment<GenreAdapter, LinearLayoutManager>(),
|
||||||
return GenreAdapter(requireActivity(), dataSet, this)
|
return GenreAdapter(requireActivity(), dataSet, this)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||||
super.onCreateOptionsMenu(menu, inflater)
|
super.onCreateMenu(menu, inflater)
|
||||||
menu.removeItem(R.id.action_grid_size)
|
menu.removeItem(R.id.action_grid_size)
|
||||||
menu.removeItem(R.id.action_layout_type)
|
menu.removeItem(R.id.action_layout_type)
|
||||||
menu.removeItem(R.id.action_sort_order)
|
menu.removeItem(R.id.action_sort_order)
|
||||||
|
|
|
@ -189,8 +189,7 @@ class HomeFragment :
|
||||||
binding.actionShuffle.elevatedAccentColor()
|
binding.actionShuffle.elevatedAccentColor()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||||
super.onCreateOptionsMenu(menu, inflater)
|
|
||||||
inflater.inflate(R.menu.menu_main, menu)
|
inflater.inflate(R.menu.menu_main, menu)
|
||||||
menu.removeItem(R.id.action_grid_size)
|
menu.removeItem(R.id.action_grid_size)
|
||||||
menu.removeItem(R.id.action_layout_type)
|
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) {
|
when (item.itemId) {
|
||||||
R.id.action_settings -> findNavController().navigate(
|
R.id.action_settings -> findNavController().navigate(
|
||||||
R.id.settingsActivity,
|
R.id.settingsActivity,
|
||||||
|
@ -291,11 +290,11 @@ class HomeFragment :
|
||||||
"ShowCreatePlaylistDialog"
|
"ShowCreatePlaylistDialog"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
return super.onOptionsItemSelected(item)
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPrepareOptionsMenu(menu: Menu) {
|
override fun onPrepareMenu(menu: Menu) {
|
||||||
super.onPrepareOptionsMenu(menu)
|
super.onPrepareMenu(menu)
|
||||||
ToolbarContentTintHelper.handleOnPrepareOptionsMenu(requireActivity(), binding.toolbar)
|
ToolbarContentTintHelper.handleOnPrepareOptionsMenu(requireActivity(), binding.toolbar)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,6 @@ class LibraryFragment : AbsMainActivityFragment(R.layout.fragment_library) {
|
||||||
|
|
||||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||||
super.onActivityCreated(savedInstanceState)
|
super.onActivityCreated(savedInstanceState)
|
||||||
setHasOptionsMenu(true)
|
|
||||||
mainActivity.setBottomNavVisibility(true)
|
mainActivity.setBottomNavVisibility(true)
|
||||||
mainActivity.setSupportActionBar(binding.toolbar)
|
mainActivity.setSupportActionBar(binding.toolbar)
|
||||||
mainActivity.supportActionBar?.title = null
|
mainActivity.supportActionBar?.title = null
|
||||||
|
@ -87,13 +86,11 @@ class LibraryFragment : AbsMainActivityFragment(R.layout.fragment_library) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPrepareOptionsMenu(menu: Menu) {
|
override fun onPrepareMenu(menu: Menu) {
|
||||||
super.onPrepareOptionsMenu(menu)
|
|
||||||
ToolbarContentTintHelper.handleOnPrepareOptionsMenu(requireActivity(), binding.toolbar)
|
ToolbarContentTintHelper.handleOnPrepareOptionsMenu(requireActivity(), binding.toolbar)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||||
super.onCreateOptionsMenu(menu, inflater)
|
|
||||||
inflater.inflate(R.menu.menu_main, menu)
|
inflater.inflate(R.menu.menu_main, menu)
|
||||||
ToolbarContentTintHelper.handleOnCreateOptionsMenu(
|
ToolbarContentTintHelper.handleOnCreateOptionsMenu(
|
||||||
requireContext(),
|
requireContext(),
|
||||||
|
@ -105,7 +102,7 @@ class LibraryFragment : AbsMainActivityFragment(R.layout.fragment_library) {
|
||||||
CastButtonFactory.setUpMediaRouteButton(requireContext(), menu, R.id.action_cast)
|
CastButtonFactory.setUpMediaRouteButton(requireContext(), menu, R.id.action_cast)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onMenuItemSelected(item: MenuItem): Boolean {
|
||||||
when (item.itemId) {
|
when (item.itemId) {
|
||||||
R.id.action_settings -> findNavController().navigate(
|
R.id.action_settings -> findNavController().navigate(
|
||||||
R.id.settingsActivity,
|
R.id.settingsActivity,
|
||||||
|
@ -121,7 +118,7 @@ class LibraryFragment : AbsMainActivityFragment(R.layout.fragment_library) {
|
||||||
"ShowCreatePlaylistDialog"
|
"ShowCreatePlaylistDialog"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
return super.onOptionsItemSelected(item)
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroyView() {
|
override fun onDestroyView() {
|
||||||
|
|
|
@ -64,11 +64,6 @@ class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_de
|
||||||
private val binding get() = _binding!!
|
private val binding get() = _binding!!
|
||||||
private var showClearHistoryOption = false
|
private var showClearHistoryOption = false
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
|
||||||
super.onCreate(savedInstanceState)
|
|
||||||
setHasOptionsMenu(true)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
_binding = FragmentPlaylistDetailBinding.bind(view)
|
_binding = FragmentPlaylistDetailBinding.bind(view)
|
||||||
|
@ -302,16 +297,14 @@ class DetailListFragment : AbsMainActivityFragment(R.layout.fragment_playlist_de
|
||||||
return cab as AttachedCab
|
return cab as AttachedCab
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||||
super.onCreateOptionsMenu(menu, inflater)
|
|
||||||
inflater.inflate(R.menu.menu_clear_history, menu)
|
inflater.inflate(R.menu.menu_clear_history, menu)
|
||||||
if (showClearHistoryOption) {
|
if (showClearHistoryOption) {
|
||||||
menu.findItem(R.id.action_clear_history).isVisible = true // Show Clear History option
|
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) {
|
when (item.itemId) {
|
||||||
R.id.action_clear_history -> {
|
R.id.action_clear_history -> {
|
||||||
if (binding.recyclerView.adapter?.itemCount!! > 0) {
|
if (binding.recyclerView.adapter?.itemCount!! > 0) {
|
||||||
|
|
|
@ -41,6 +41,7 @@ import code.name.monkey.retromusic.databinding.FragmentLyricsBinding
|
||||||
import code.name.monkey.retromusic.databinding.FragmentNormalLyricsBinding
|
import code.name.monkey.retromusic.databinding.FragmentNormalLyricsBinding
|
||||||
import code.name.monkey.retromusic.databinding.FragmentSyncedLyricsBinding
|
import code.name.monkey.retromusic.databinding.FragmentSyncedLyricsBinding
|
||||||
import code.name.monkey.retromusic.extensions.*
|
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.fragments.base.AbsMusicServiceFragment
|
||||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||||
import code.name.monkey.retromusic.helper.MusicProgressViewUpdateHelper
|
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.LyricUtil
|
||||||
import code.name.monkey.retromusic.util.UriUtil
|
import code.name.monkey.retromusic.util.UriUtil
|
||||||
import com.afollestad.materialdialogs.input.input
|
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.tabs.TabLayoutMediator
|
||||||
import com.google.android.material.transition.platform.MaterialContainerTransform
|
|
||||||
import kotlinx.coroutines.GlobalScope
|
import kotlinx.coroutines.GlobalScope
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import org.jaudiotagger.audio.AudioFileIO
|
import org.jaudiotagger.audio.AudioFileIO
|
||||||
|
@ -62,15 +61,12 @@ import java.io.File
|
||||||
import java.io.FileOutputStream
|
import java.io.FileOutputStream
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class LyricsFragment : AbsMusicServiceFragment(R.layout.fragment_lyrics) {
|
class LyricsFragment : AbsMainActivityFragment(R.layout.fragment_lyrics) {
|
||||||
|
|
||||||
private var _binding: FragmentLyricsBinding? = null
|
private var _binding: FragmentLyricsBinding? = null
|
||||||
private val binding get() = _binding!!
|
private val binding get() = _binding!!
|
||||||
private lateinit var song: Song
|
private lateinit var song: Song
|
||||||
|
|
||||||
val mainActivity: MainActivity
|
|
||||||
get() = activity as MainActivity
|
|
||||||
|
|
||||||
private lateinit var lyricsSectionsAdapter: LyricsSectionsAdapter
|
private lateinit var lyricsSectionsAdapter: LyricsSectionsAdapter
|
||||||
|
|
||||||
private val googleSearchLrcUrl: String
|
private val googleSearchLrcUrl: String
|
||||||
|
@ -90,16 +86,6 @@ class LyricsFragment : AbsMusicServiceFragment(R.layout.fragment_lyrics) {
|
||||||
return baseUrl
|
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<IntentSenderRequest>
|
private lateinit var normalLyricsLauncher: ActivityResultLauncher<IntentSenderRequest>
|
||||||
private lateinit var newSyncedLyricsLauncher: ActivityResultLauncher<Intent>
|
private lateinit var newSyncedLyricsLauncher: ActivityResultLauncher<Intent>
|
||||||
private lateinit var editSyncedLyricsLauncher: ActivityResultLauncher<IntentSenderRequest>
|
private lateinit var editSyncedLyricsLauncher: ActivityResultLauncher<IntentSenderRequest>
|
||||||
|
@ -139,7 +125,6 @@ class LyricsFragment : AbsMusicServiceFragment(R.layout.fragment_lyrics) {
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
setHasOptionsMenu(true)
|
|
||||||
updateTitleSong()
|
updateTitleSong()
|
||||||
enterTransition = Fade()
|
enterTransition = Fade()
|
||||||
exitTransition = Fade()
|
exitTransition = Fade()
|
||||||
|
@ -204,7 +189,7 @@ class LyricsFragment : AbsMusicServiceFragment(R.layout.fragment_lyrics) {
|
||||||
requireActivity().window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
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)
|
inflater.inflate(R.menu.menu_search, menu)
|
||||||
ToolbarContentTintHelper.handleOnCreateOptionsMenu(
|
ToolbarContentTintHelper.handleOnCreateOptionsMenu(
|
||||||
requireContext(),
|
requireContext(),
|
||||||
|
@ -212,14 +197,9 @@ class LyricsFragment : AbsMusicServiceFragment(R.layout.fragment_lyrics) {
|
||||||
menu,
|
menu,
|
||||||
ATHToolbarActivity.getToolbarBackgroundColor(binding.toolbar)
|
ATHToolbarActivity.getToolbarBackgroundColor(binding.toolbar)
|
||||||
)
|
)
|
||||||
return super.onCreateOptionsMenu(menu, inflater)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onMenuItemSelected(item: MenuItem): Boolean {
|
||||||
if (item.itemId == android.R.id.home) {
|
|
||||||
findNavController().navigateUp()
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
if (item.itemId == R.id.action_search) {
|
if (item.itemId == R.id.action_search) {
|
||||||
openUrl(when (binding.lyricsPager.currentItem) {
|
openUrl(when (binding.lyricsPager.currentItem) {
|
||||||
0 -> syairSearchLrcUrl
|
0 -> syairSearchLrcUrl
|
||||||
|
@ -228,7 +208,7 @@ class LyricsFragment : AbsMusicServiceFragment(R.layout.fragment_lyrics) {
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
return super.onOptionsItemSelected(item)
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,6 @@ import android.graphics.Color
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.MenuItem
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.activity.result.ActivityResult
|
import androidx.activity.result.ActivityResult
|
||||||
|
@ -167,13 +166,6 @@ class UserInfoFragment : Fragment() {
|
||||||
.into(binding.userImage)
|
.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() {
|
private fun selectBannerImage() {
|
||||||
ImagePicker.with(this)
|
ImagePicker.with(this)
|
||||||
.compress(1440)
|
.compress(1440)
|
||||||
|
@ -309,10 +301,4 @@ class UserInfoFragment : Fragment() {
|
||||||
super.onDestroyView()
|
super.onDestroyView()
|
||||||
_binding = null
|
_binding = null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
private const val PICK_IMAGE_REQUEST = 9002
|
|
||||||
private const val PICK_BANNER_REQUEST = 9004
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -257,14 +257,12 @@ class FullPlaybackControlsFragment :
|
||||||
private fun toggleFavorite(song: Song) {
|
private fun toggleFavorite(song: Song) {
|
||||||
lifecycleScope.launch(Dispatchers.IO) {
|
lifecycleScope.launch(Dispatchers.IO) {
|
||||||
val playlist: PlaylistEntity = libraryViewModel.favoritePlaylist()
|
val playlist: PlaylistEntity = libraryViewModel.favoritePlaylist()
|
||||||
if (playlist != null) {
|
val songEntity = song.toSongEntity(playlist.playListId)
|
||||||
val songEntity = song.toSongEntity(playlist.playListId)
|
val isFavorite = libraryViewModel.isFavoriteSong(songEntity).isNotEmpty()
|
||||||
val isFavorite = libraryViewModel.isFavoriteSong(songEntity).isNotEmpty()
|
if (isFavorite) {
|
||||||
if (isFavorite) {
|
libraryViewModel.removeSongFromPlaylist(songEntity)
|
||||||
libraryViewModel.removeSongFromPlaylist(songEntity)
|
} else {
|
||||||
} else {
|
libraryViewModel.insertSongs(listOf(song.toSongEntity(playlist.playListId)))
|
||||||
libraryViewModel.insertSongs(listOf(song.toSongEntity(playlist.playListId)))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
libraryViewModel.forceReload(ReloadType.Playlists)
|
libraryViewModel.forceReload(ReloadType.Playlists)
|
||||||
requireContext().sendBroadcast(Intent(MusicService.FAVORITE_STATE_CHANGED))
|
requireContext().sendBroadcast(Intent(MusicService.FAVORITE_STATE_CHANGED))
|
||||||
|
|
|
@ -69,7 +69,6 @@ class PlaylistDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playli
|
||||||
_binding = FragmentPlaylistDetailBinding.bind(view)
|
_binding = FragmentPlaylistDetailBinding.bind(view)
|
||||||
enterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true).addTarget(view)
|
enterTransition = MaterialSharedAxis(MaterialSharedAxis.Z, true).addTarget(view)
|
||||||
returnTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false)
|
returnTransition = MaterialSharedAxis(MaterialSharedAxis.Z, false)
|
||||||
setHasOptionsMenu(true)
|
|
||||||
mainActivity.setSupportActionBar(binding.toolbar)
|
mainActivity.setSupportActionBar(binding.toolbar)
|
||||||
binding.container.transitionName = "playlist"
|
binding.container.transitionName = "playlist"
|
||||||
playlist = arguments.extraPlaylist
|
playlist = arguments.extraPlaylist
|
||||||
|
@ -122,12 +121,11 @@ class PlaylistDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playli
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||||
super.onCreateOptionsMenu(menu, inflater)
|
|
||||||
inflater.inflate(R.menu.menu_playlist_detail, menu)
|
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)
|
return PlaylistMenuHelper.handleMenuClick(requireActivity(), playlist, item)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,16 +173,6 @@ class PlaylistDetailsFragment : AbsMainActivityFragment(R.layout.fragment_playli
|
||||||
_binding = null
|
_binding = null
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleBackPress(): Boolean {
|
|
||||||
cab?.let {
|
|
||||||
if (it.isActive()) {
|
|
||||||
it.destroy()
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
private var cab: AttachedCab? = null
|
private var cab: AttachedCab? = null
|
||||||
|
|
||||||
override fun openCab(menuRes: Int, callback: ICabCallback): AttachedCab {
|
override fun openCab(menuRes: Int, callback: ICabCallback): AttachedCab {
|
||||||
|
|
|
@ -71,8 +71,8 @@ class PlaylistsFragment :
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||||
super.onCreateOptionsMenu(menu, inflater)
|
super.onCreateMenu(menu, inflater)
|
||||||
val gridSizeItem: MenuItem = menu.findItem(R.id.action_grid_size)
|
val gridSizeItem: MenuItem = menu.findItem(R.id.action_grid_size)
|
||||||
if (RetroUtil.isLandscape()) {
|
if (RetroUtil.isLandscape()) {
|
||||||
gridSizeItem.setTitle(R.string.action_grid_size_land)
|
gridSizeItem.setTitle(R.string.action_grid_size_land)
|
||||||
|
@ -88,14 +88,14 @@ class PlaylistsFragment :
|
||||||
CastButtonFactory.setUpMediaRouteButton(requireContext(), menu, R.id.action_cast)
|
CastButtonFactory.setUpMediaRouteButton(requireContext(), menu, R.id.action_cast)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onMenuItemSelected(item: MenuItem): Boolean {
|
||||||
if (handleGridSizeMenuItem(item)) {
|
if (handleGridSizeMenuItem(item)) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if (handleSortOrderMenuItem(item)) {
|
if (handleSortOrderMenuItem(item)) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
return super.onOptionsItemSelected(item)
|
return super.onMenuItemSelected(item)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupGridSizeMenu(gridSizeMenu: SubMenu) {
|
private fun setupGridSizeMenu(gridSizeMenu: SubMenu) {
|
||||||
|
|
|
@ -20,8 +20,7 @@ import android.content.Intent
|
||||||
import android.content.res.ColorStateList
|
import android.content.res.ColorStateList
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.speech.RecognizerIntent
|
import android.speech.RecognizerIntent
|
||||||
import android.view.View
|
import android.view.*
|
||||||
import android.view.ViewGroup
|
|
||||||
import android.view.inputmethod.InputMethodManager
|
import android.view.inputmethod.InputMethodManager
|
||||||
import androidx.core.content.getSystemService
|
import androidx.core.content.getSystemService
|
||||||
import androidx.core.view.*
|
import androidx.core.view.*
|
||||||
|
@ -246,6 +245,10 @@ class SearchFragment : AbsMainActivityFragment(R.layout.fragment_search),
|
||||||
override fun onCheckedChanged(group: ChipGroup, checkedIds: MutableList<Int>) {
|
override fun onCheckedChanged(group: ChipGroup, checkedIds: MutableList<Int>) {
|
||||||
search(binding.searchView.text.toString())
|
search(binding.searchView.text.toString())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {}
|
||||||
|
|
||||||
|
override fun onMenuItemSelected(menuItem: MenuItem) = false
|
||||||
}
|
}
|
||||||
|
|
||||||
enum class Filter {
|
enum class Filter {
|
||||||
|
|
|
@ -125,8 +125,8 @@ class SongsFragment : AbsRecyclerViewCustomGridSizeFragment<SongAdapter, GridLay
|
||||||
libraryViewModel.forceReload(ReloadType.Songs)
|
libraryViewModel.forceReload(ReloadType.Songs)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||||
super.onCreateOptionsMenu(menu, inflater)
|
super.onCreateMenu(menu, inflater)
|
||||||
val gridSizeItem: MenuItem = menu.findItem(R.id.action_grid_size)
|
val gridSizeItem: MenuItem = menu.findItem(R.id.action_grid_size)
|
||||||
if (RetroUtil.isLandscape()) {
|
if (RetroUtil.isLandscape()) {
|
||||||
gridSizeItem.setTitle(R.string.action_grid_size_land)
|
gridSizeItem.setTitle(R.string.action_grid_size_land)
|
||||||
|
@ -261,7 +261,7 @@ class SongsFragment : AbsRecyclerViewCustomGridSizeFragment<SongAdapter, GridLay
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onMenuItemSelected(item: MenuItem): Boolean {
|
||||||
if (handleGridSizeMenuItem(item)) {
|
if (handleGridSizeMenuItem(item)) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
@ -271,7 +271,7 @@ class SongsFragment : AbsRecyclerViewCustomGridSizeFragment<SongAdapter, GridLay
|
||||||
if (handleSortOrderMenuItem(item)) {
|
if (handleSortOrderMenuItem(item)) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
return super.onOptionsItemSelected(item)
|
return super.onMenuItemSelected(item)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleSortOrderMenuItem(
|
private fun handleSortOrderMenuItem(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue