Skip to content
This repository has been archived by the owner on Aug 24, 2023. It is now read-only.

Commit

Permalink
ShuffleButton: Connect shuffle behavior with sheet indicator
Browse files Browse the repository at this point in the history
Signed-off-by: Shinjo Akane <akane@akanework.org>
  • Loading branch information
AkaneTan committed Jul 8, 2023
1 parent e7ad170 commit 3fc03e9
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 39 deletions.
46 changes: 23 additions & 23 deletions app/src/main/java/org/akanework/symphonica/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import android.net.Uri
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.util.Log
import android.view.View
import android.view.View.GONE
import android.view.View.VISIBLE
Expand Down Expand Up @@ -351,9 +352,6 @@ class MainActivity : AppCompatActivity() {
0 -> {
booleanViewModel.loopButtonStatus = 1
fullSheetLoopButton?.isChecked = true
if (!isListShuffleEnabled) {
fullSheetLoopButton?.isChecked = true
}
}

1 -> {
Expand All @@ -368,6 +366,10 @@ class MainActivity : AppCompatActivity() {
fullSheetLoopButton?.isChecked = false
fullSheetLoopButton?.icon =
AppCompatResources.getDrawable(this, R.drawable.ic_repeat)
if (!isListShuffleEnabled) {
fullSheetLoopButton?.isChecked = true
booleanViewModel.loopButtonStatus = 2
}
}

else -> throw IllegalStateException()
Expand All @@ -382,30 +384,28 @@ class MainActivity : AppCompatActivity() {
) {
fullSheetLoopButton?.isChecked = isChecked
booleanViewModel.shuffleState = isChecked
} else if (playlistViewModel.playList.isNotEmpty()) {
} else {
val playlist = playlistViewModel.playList
val originalPlaylist = playlistViewModel.originalPlaylist
val currentSong = playlist[playlistViewModel.currentLocation]

if (playlist.isNotEmpty() && originalPlaylist.isEmpty()) {
originalPlaylist.addAll(playlist)
playlist.shuffle()
playlist.remove(currentSong)
playlist.add(0, currentSong)
playlistViewModel.currentLocation = 0
broadcastMetaDataUpdate()
} else if (playlist.isNotEmpty()) {
playlist.clear()
playlist.addAll(originalPlaylist)
playlistViewModel.currentLocation = playlist.indexOf(currentSong)
originalPlaylist.clear()

broadcastMetaDataUpdate()
if (playlistViewModel.playList.isNotEmpty()) {
val currentSong = playlist[playlistViewModel.currentLocation]
if (originalPlaylist.isEmpty()) {
originalPlaylist.addAll(playlist)
playlist.shuffle()
playlist.remove(currentSong)
playlist.add(0, currentSong)
playlistViewModel.currentLocation = 0
broadcastMetaDataUpdate()
} else {
playlist.clear()
playlist.addAll(originalPlaylist)
playlistViewModel.currentLocation = playlist.indexOf(currentSong)
originalPlaylist.clear()

broadcastMetaDataUpdate()
}
}
booleanViewModel.shuffleState = isChecked
} else {
fullSheetShuffleButton?.isChecked = false
booleanViewModel.shuffleState = false
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,12 @@ import com.google.android.material.color.MaterialColors
import com.google.android.material.transition.MaterialSharedAxis
import org.akanework.symphonica.MainActivity
import org.akanework.symphonica.MainActivity.Companion.customFragmentManager
import org.akanework.symphonica.MainActivity.Companion.fullSheetLoopButton
import org.akanework.symphonica.MainActivity.Companion.fullSheetShuffleButton
import org.akanework.symphonica.MainActivity.Companion.isColorfulButtonEnabled
import org.akanework.symphonica.MainActivity.Companion.isListShuffleEnabled
import org.akanework.symphonica.MainActivity.Companion.libraryViewModel
import org.akanework.symphonica.MainActivity.Companion.playlistViewModel
import org.akanework.symphonica.R
import org.akanework.symphonica.logic.data.Song
import org.akanework.symphonica.logic.util.replacePlaylist
Expand Down Expand Up @@ -149,14 +153,25 @@ class HomeFragment : Fragment() {

homeShuffleButton.setOnClickListener {
if (libraryViewModel.librarySongList.isNotEmpty()) {
replacePlaylist(
libraryViewModel.librarySongList.toMutableList(),
(0 until libraryViewModel.librarySongList.size).random()
)
if (MainActivity.booleanViewModel.shuffleState) {
MainActivity.booleanViewModel.shuffleState = false
MainActivity.fullSheetShuffleButton!!.isChecked = false
MainActivity.playlistViewModel.originalPlaylist.clear()
if (!isListShuffleEnabled) {
replacePlaylist(
libraryViewModel.librarySongList.toMutableList(),
(0 until libraryViewModel.librarySongList.size).random()
)
fullSheetShuffleButton?.isChecked = true
fullSheetLoopButton?.isChecked = true
} else {
fullSheetShuffleButton?.isChecked = true
val playlist = mutableListOf<Song>()
playlist.addAll(libraryViewModel.librarySongList)
val shuffleSong = playlist.random()

val originalPlaylist = playlistViewModel.originalPlaylist
originalPlaylist.addAll(playlist)
playlist.shuffle()
playlist.remove(shuffleSong)
playlist.add(0, shuffleSong)
replacePlaylist(playlist, 0)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import org.akanework.symphonica.MainActivity.Companion.libraryViewModel
import org.akanework.symphonica.MainActivity.Companion.switchDrawer
import org.akanework.symphonica.MainActivity.Companion.switchNavigationViewIndex
import org.akanework.symphonica.R
import org.akanework.symphonica.logic.data.Song
import org.akanework.symphonica.logic.util.replacePlaylist
import org.akanework.symphonica.ui.adapter.NavFragmentPageAdapter
import org.akanework.symphonica.ui.fragment.LibraryListFragment.Companion.updateRecyclerListViewOppositeOrder
Expand Down Expand Up @@ -81,14 +82,25 @@ class LibraryFragment : Fragment() {

libraryShuffleButton.setOnClickListener {
if (libraryViewModel.librarySongList.isNotEmpty()) {
replacePlaylist(
libraryViewModel.librarySongList.toMutableList(),
(0 until libraryViewModel.librarySongList.size).random()
)
if (MainActivity.booleanViewModel.shuffleState) {
MainActivity.booleanViewModel.shuffleState = false
MainActivity.fullSheetShuffleButton!!.isChecked = false
MainActivity.playlistViewModel.originalPlaylist.clear()
if (!MainActivity.isListShuffleEnabled) {
replacePlaylist(
libraryViewModel.librarySongList.toMutableList(),
(0 until libraryViewModel.librarySongList.size).random()
)
MainActivity.fullSheetShuffleButton?.isChecked = true
MainActivity.fullSheetLoopButton?.isChecked = true
} else {
MainActivity.fullSheetShuffleButton?.isChecked = true
val playlist = mutableListOf<Song>()
playlist.addAll(libraryViewModel.librarySongList)
val shuffleSong = playlist.random()

val originalPlaylist = MainActivity.playlistViewModel.originalPlaylist
originalPlaylist.addAll(playlist)
playlist.shuffle()
playlist.remove(shuffleSong)
playlist.add(0, shuffleSong)
replacePlaylist(playlist, 0)
}
}
}
Expand Down

0 comments on commit 3fc03e9

Please sign in to comment.