mirror of
https://gitlab.com/ultrasonic/ultrasonic.git
synced 2025-06-08 11:32:10 +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 pauseButton: View
|
||||||
private lateinit var stopButton: View
|
private lateinit var stopButton: View
|
||||||
private lateinit var playButton: View
|
private lateinit var playButton: View
|
||||||
|
private lateinit var shuffleButton: View
|
||||||
private lateinit var repeatButton: ImageView
|
private lateinit var repeatButton: ImageView
|
||||||
private lateinit var hollowStar: Drawable
|
private lateinit var hollowStar: Drawable
|
||||||
private lateinit var fullStar: Drawable
|
private lateinit var fullStar: Drawable
|
||||||
@ -219,7 +220,10 @@ class PlayerFragment :
|
|||||||
findViews(view)
|
findViews(view)
|
||||||
val previousButton: AutoRepeatButton = view.findViewById(R.id.button_previous)
|
val previousButton: AutoRepeatButton = view.findViewById(R.id.button_previous)
|
||||||
val nextButton: AutoRepeatButton = view.findViewById(R.id.button_next)
|
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)
|
val ratingLinearLayout = view.findViewById<LinearLayout>(R.id.song_rating)
|
||||||
if (!useFiveStarRating) ratingLinearLayout.isVisible = false
|
if (!useFiveStarRating) ratingLinearLayout.isVisible = false
|
||||||
hollowStar = Util.getDrawableFromAttribute(view.context, R.attr.star_hollow)
|
hollowStar = Util.getDrawableFromAttribute(view.context, R.attr.star_hollow)
|
||||||
@ -293,8 +297,7 @@ class PlayerFragment :
|
|||||||
}
|
}
|
||||||
|
|
||||||
shuffleButton.setOnClickListener {
|
shuffleButton.setOnClickListener {
|
||||||
mediaPlayerController.toggleShuffle()
|
toggleShuffle()
|
||||||
Util.toast(activity, R.string.download_menu_shuffle_notification)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
repeatButton.setOnClickListener {
|
repeatButton.setOnClickListener {
|
||||||
@ -417,6 +420,57 @@ class PlayerFragment :
|
|||||||
view.setOnTouchListener { _, event -> gestureScanner.onTouchEvent(event) }
|
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() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
if (mediaPlayerController.currentPlayingLegacy == null) {
|
if (mediaPlayerController.currentPlayingLegacy == null) {
|
||||||
@ -621,7 +675,6 @@ class PlayerFragment :
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
R.id.menu_remove -> {
|
R.id.menu_remove -> {
|
||||||
mediaPlayerController.removeFromPlaylist(song!!)
|
|
||||||
onPlaylistChanged()
|
onPlaylistChanged()
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
@ -637,8 +690,7 @@ class PlayerFragment :
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
R.id.menu_shuffle -> {
|
R.id.menu_shuffle -> {
|
||||||
mediaPlayerController.toggleShuffle()
|
toggleShuffle()
|
||||||
Util.toast(context, R.string.download_menu_shuffle_notification)
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
R.id.menu_item_equalizer -> {
|
R.id.menu_item_equalizer -> {
|
||||||
@ -878,8 +930,6 @@ class PlayerFragment :
|
|||||||
|
|
||||||
// Move it in the data set
|
// Move it in the data set
|
||||||
mediaPlayerController.moveItemInPlaylist(from, to)
|
mediaPlayerController.moveItemInPlaylist(from, to)
|
||||||
viewAdapter.submitList(mediaPlayerController.playList)
|
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -887,17 +937,15 @@ class PlayerFragment :
|
|||||||
@SuppressLint("NotifyDataSetChanged")
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
|
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
|
||||||
val pos = viewHolder.bindingAdapterPosition
|
val pos = viewHolder.bindingAdapterPosition
|
||||||
val file = mediaPlayerController.playList[pos]
|
val item = mediaPlayerController.controller?.getMediaItemAt(pos)
|
||||||
mediaPlayerController.removeFromPlaylist(file)
|
mediaPlayerController.removeFromPlaylist(pos)
|
||||||
|
|
||||||
val songRemoved = String.format(
|
val songRemoved = String.format(
|
||||||
resources.getString(R.string.download_song_removed),
|
resources.getString(R.string.download_song_removed),
|
||||||
file.track.title
|
item?.mediaMetadata?.title
|
||||||
)
|
)
|
||||||
Util.toast(context, songRemoved)
|
|
||||||
|
|
||||||
viewAdapter.submitList(mediaPlayerController.playList)
|
Util.toast(context, songRemoved)
|
||||||
viewAdapter.notifyDataSetChanged()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onSelectedChanged(
|
override fun onSelectedChanged(
|
||||||
@ -938,25 +986,7 @@ class PlayerFragment :
|
|||||||
|
|
||||||
emptyTextView.isVisible = list.isEmpty()
|
emptyTextView.isVisible = list.isEmpty()
|
||||||
|
|
||||||
when (mediaPlayerController.repeatMode) {
|
updateRepeatButtonState(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 -> {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun onCurrentChanged() {
|
private fun onCurrentChanged() {
|
||||||
|
@ -419,8 +419,9 @@ class MediaPlayerController(
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Synchronized
|
@Synchronized
|
||||||
fun toggleShuffle() {
|
fun toggleShuffle(): Boolean {
|
||||||
isShufflePlayEnabled = !isShufflePlayEnabled
|
isShufflePlayEnabled = !isShufflePlayEnabled
|
||||||
|
return isShufflePlayEnabled
|
||||||
}
|
}
|
||||||
|
|
||||||
val bufferedPercentage: Int
|
val bufferedPercentage: Int
|
||||||
@ -475,9 +476,9 @@ class MediaPlayerController(
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Synchronized
|
@Synchronized
|
||||||
// FIXME
|
fun removeFromPlaylist(position: Int) {
|
||||||
// With the new API we can only remove by index!!
|
|
||||||
fun removeFromPlaylist(downloadFile: DownloadFile) {
|
controller?.removeMediaItem(position)
|
||||||
|
|
||||||
playbackStateSerializer.serialize(
|
playbackStateSerializer.serialize(
|
||||||
legacyPlaylistManager.playlist,
|
legacyPlaylistManager.playlist,
|
||||||
|
@ -75,6 +75,8 @@
|
|||||||
<string name="download.menu_screen_on">Screen On</string>
|
<string name="download.menu_screen_on">Screen On</string>
|
||||||
<string name="download.menu_show_album">Show Album</string>
|
<string name="download.menu_show_album">Show Album</string>
|
||||||
<string name="download.menu_shuffle">Shuffle</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_shuffle_notification">Playlist was shuffled</string>
|
||||||
<string name="download.menu_visualizer">Visualizer</string>
|
<string name="download.menu_visualizer">Visualizer</string>
|
||||||
<string name="download.playerstate_buffering">Buffering</string>
|
<string name="download.playerstate_buffering">Buffering</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user