mirror of
https://gitlab.com/ultrasonic/ultrasonic.git
synced 2025-06-06 18:43:05 +03:00
Use grayed out shuffle and repeat buttons.
Fix removing and resorting playlist.
This commit is contained in:
parent
7742f67796
commit
ba1a1c5538
@ -149,6 +149,7 @@ class PlayerFragment :
|
||||
private lateinit var pauseButton: View
|
||||
private lateinit var stopButton: View
|
||||
private lateinit var playButton: View
|
||||
private lateinit var shuffleButton: View
|
||||
private lateinit var repeatButton: ImageView
|
||||
private lateinit var hollowStar: Drawable
|
||||
private lateinit var fullStar: Drawable
|
||||
@ -219,7 +220,10 @@ class PlayerFragment :
|
||||
findViews(view)
|
||||
val previousButton: AutoRepeatButton = view.findViewById(R.id.button_previous)
|
||||
val nextButton: AutoRepeatButton = view.findViewById(R.id.button_next)
|
||||
val shuffleButton = view.findViewById<View>(R.id.button_shuffle)
|
||||
shuffleButton = view.findViewById(R.id.button_shuffle)
|
||||
updateShuffleButtonState(mediaPlayerController.isShufflePlayEnabled)
|
||||
updateRepeatButtonState(mediaPlayerController.repeatMode)
|
||||
|
||||
val ratingLinearLayout = view.findViewById<LinearLayout>(R.id.song_rating)
|
||||
if (!useFiveStarRating) ratingLinearLayout.isVisible = false
|
||||
hollowStar = Util.getDrawableFromAttribute(view.context, R.attr.star_hollow)
|
||||
@ -293,8 +297,7 @@ class PlayerFragment :
|
||||
}
|
||||
|
||||
shuffleButton.setOnClickListener {
|
||||
mediaPlayerController.toggleShuffle()
|
||||
Util.toast(activity, R.string.download_menu_shuffle_notification)
|
||||
toggleShuffle()
|
||||
}
|
||||
|
||||
repeatButton.setOnClickListener {
|
||||
@ -417,6 +420,57 @@ class PlayerFragment :
|
||||
view.setOnTouchListener { _, event -> gestureScanner.onTouchEvent(event) }
|
||||
}
|
||||
|
||||
private fun updateShuffleButtonState(isEnabled: Boolean) {
|
||||
if (isEnabled) {
|
||||
shuffleButton.alpha = 1f
|
||||
} else {
|
||||
shuffleButton.alpha = 0.6f
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateRepeatButtonState(repeatMode: Int) {
|
||||
when (repeatMode) {
|
||||
0 -> {
|
||||
repeatButton.setImageDrawable(
|
||||
Util.getDrawableFromAttribute(
|
||||
requireContext(), R.attr.media_repeat_off
|
||||
)
|
||||
)
|
||||
shuffleButton.alpha = 0.6f
|
||||
}
|
||||
1 -> {
|
||||
repeatButton.setImageDrawable(
|
||||
Util.getDrawableFromAttribute(
|
||||
requireContext(), R.attr.media_repeat_single
|
||||
)
|
||||
)
|
||||
shuffleButton.alpha = 1f
|
||||
}
|
||||
2 -> {
|
||||
repeatButton.setImageDrawable(
|
||||
Util.getDrawableFromAttribute(
|
||||
requireContext(), R.attr.media_repeat_all
|
||||
)
|
||||
)
|
||||
shuffleButton.alpha = 1f
|
||||
}
|
||||
else -> {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun toggleShuffle() {
|
||||
val isEnabled = mediaPlayerController.toggleShuffle()
|
||||
|
||||
if (isEnabled) {
|
||||
Util.toast(activity, R.string.download_menu_shuffle_on)
|
||||
} else {
|
||||
Util.toast(activity, R.string.download_menu_shuffle_off)
|
||||
}
|
||||
|
||||
updateShuffleButtonState(isEnabled)
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
if (mediaPlayerController.currentPlayingLegacy == null) {
|
||||
@ -621,7 +675,6 @@ class PlayerFragment :
|
||||
return true
|
||||
}
|
||||
R.id.menu_remove -> {
|
||||
mediaPlayerController.removeFromPlaylist(song!!)
|
||||
onPlaylistChanged()
|
||||
return true
|
||||
}
|
||||
@ -637,8 +690,7 @@ class PlayerFragment :
|
||||
return true
|
||||
}
|
||||
R.id.menu_shuffle -> {
|
||||
mediaPlayerController.toggleShuffle()
|
||||
Util.toast(context, R.string.download_menu_shuffle_notification)
|
||||
toggleShuffle()
|
||||
return true
|
||||
}
|
||||
R.id.menu_item_equalizer -> {
|
||||
@ -878,8 +930,6 @@ class PlayerFragment :
|
||||
|
||||
// Move it in the data set
|
||||
mediaPlayerController.moveItemInPlaylist(from, to)
|
||||
viewAdapter.submitList(mediaPlayerController.playList)
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
@ -887,17 +937,15 @@ class PlayerFragment :
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
|
||||
val pos = viewHolder.bindingAdapterPosition
|
||||
val file = mediaPlayerController.playList[pos]
|
||||
mediaPlayerController.removeFromPlaylist(file)
|
||||
val item = mediaPlayerController.controller?.getMediaItemAt(pos)
|
||||
mediaPlayerController.removeFromPlaylist(pos)
|
||||
|
||||
val songRemoved = String.format(
|
||||
resources.getString(R.string.download_song_removed),
|
||||
file.track.title
|
||||
item?.mediaMetadata?.title
|
||||
)
|
||||
Util.toast(context, songRemoved)
|
||||
|
||||
viewAdapter.submitList(mediaPlayerController.playList)
|
||||
viewAdapter.notifyDataSetChanged()
|
||||
Util.toast(context, songRemoved)
|
||||
}
|
||||
|
||||
override fun onSelectedChanged(
|
||||
@ -938,25 +986,7 @@ class PlayerFragment :
|
||||
|
||||
emptyTextView.isVisible = list.isEmpty()
|
||||
|
||||
when (mediaPlayerController.repeatMode) {
|
||||
0 -> repeatButton.setImageDrawable(
|
||||
Util.getDrawableFromAttribute(
|
||||
requireContext(), R.attr.media_repeat_off
|
||||
)
|
||||
)
|
||||
1 -> repeatButton.setImageDrawable(
|
||||
Util.getDrawableFromAttribute(
|
||||
requireContext(), R.attr.media_repeat_single
|
||||
)
|
||||
)
|
||||
2 -> repeatButton.setImageDrawable(
|
||||
Util.getDrawableFromAttribute(
|
||||
requireContext(), R.attr.media_repeat_all
|
||||
)
|
||||
)
|
||||
else -> {
|
||||
}
|
||||
}
|
||||
updateRepeatButtonState(mediaPlayerController.repeatMode)
|
||||
}
|
||||
|
||||
private fun onCurrentChanged() {
|
||||
|
@ -419,8 +419,9 @@ class MediaPlayerController(
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
fun toggleShuffle() {
|
||||
fun toggleShuffle(): Boolean {
|
||||
isShufflePlayEnabled = !isShufflePlayEnabled
|
||||
return isShufflePlayEnabled
|
||||
}
|
||||
|
||||
val bufferedPercentage: Int
|
||||
@ -475,9 +476,9 @@ class MediaPlayerController(
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
// FIXME
|
||||
// With the new API we can only remove by index!!
|
||||
fun removeFromPlaylist(downloadFile: DownloadFile) {
|
||||
fun removeFromPlaylist(position: Int) {
|
||||
|
||||
controller?.removeMediaItem(position)
|
||||
|
||||
playbackStateSerializer.serialize(
|
||||
legacyPlaylistManager.playlist,
|
||||
|
@ -75,6 +75,8 @@
|
||||
<string name="download.menu_screen_on">Screen On</string>
|
||||
<string name="download.menu_show_album">Show Album</string>
|
||||
<string name="download.menu_shuffle">Shuffle</string>
|
||||
<string name="download.menu_shuffle_on">Shuffle mode enabled</string>
|
||||
<string name="download.menu_shuffle_off">Shuffle mode disabled</string>
|
||||
<string name="download.menu_shuffle_notification">Playlist was shuffled</string>
|
||||
<string name="download.menu_visualizer">Visualizer</string>
|
||||
<string name="download.playerstate_buffering">Buffering</string>
|
||||
|
Loading…
x
Reference in New Issue
Block a user