diff --git a/app/src/debug/res/values/strings.xml b/app/src/debug/res/values/strings.xml
index bb857a700..025c0a0a5 100644
--- a/app/src/debug/res/values/strings.xml
+++ b/app/src/debug/res/values/strings.xml
@@ -1,4 +1,4 @@
- Auxio Debug
+ Auxio Debug
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 808e1d476..2aaa3c6a4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,7 +13,7 @@
android:allowBackup="true"
android:fullBackupContent="@xml/backup_descriptor"
android:icon="@mipmap/ic_launcher"
- android:label="@string/app_name"
+ android:label="@string/info_app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Base">
@@ -32,7 +32,7 @@
= Build.VERSION_CODES.O) {
val channel = NotificationChannel(
NotificationUtils.CHANNEL_ID,
- context.getString(R.string.label_channel),
+ context.getString(R.string.info_channel_name),
NotificationManager.IMPORTANCE_DEFAULT
)
@@ -155,7 +157,14 @@ fun NotificationCompat.Builder.updateMode(context: Context) {
if (playbackManager.mode == PlaybackMode.ALL_SONGS) {
setSubText(context.getString(R.string.label_all_songs))
} else {
- setSubText(playbackManager.parent!!.name)
+ val parent = playbackManager.parent
+
+ if (parent != null) {
+ setSubText(if (parent is Genre) parent.displayName else parent.name)
+ } else {
+ logE("Parent was null when it shouldnt have been.")
+ setSubText("")
+ }
}
}
}
diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt
index 1a16a3f83..bf7f6dbeb 100644
--- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt
@@ -111,7 +111,6 @@ class PlaybackFragment : Fragment(), SeekBar.OnSeekBarChangeListener {
}
}
- // TODO: Add binding adapters for these
playbackModel.isShuffling.observe(viewLifecycleOwner) {
// Highlight the shuffle button if Playback is shuffled, and revert it if not.
if (it) {
diff --git a/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt b/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt
index a0412bed7..23fe7be82 100644
--- a/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt
+++ b/app/src/main/java/org/oxycblt/auxio/playback/state/PlaybackStateManager.kt
@@ -17,7 +17,6 @@ import org.oxycblt.auxio.music.MusicStore
import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.recycler.SortMode
import org.oxycblt.auxio.settings.SettingsManager
-import kotlin.random.Random
/**
* Master class (and possible god object) for the playback state.
@@ -154,60 +153,44 @@ class PlaybackStateManager private constructor() {
fun playSong(song: Song, mode: PlaybackMode) {
logD("Updating song to ${song.name} and mode to $mode")
- // Song is updated immediately, as its reference is needed for the queue calculations
- updatePlayback(song)
-
val shouldShuffle = settingsManager.keepShuffle && mIsShuffling
when (mode) {
PlaybackMode.ALL_SONGS -> {
mParent = null
-
- mQueue = if (shouldShuffle) {
- genShuffle(musicStore.songs.toMutableList(), true)
- } else {
- musicStore.songs.toMutableList()
- }
+ mQueue = musicStore.songs.toMutableList()
}
PlaybackMode.IN_GENRE -> {
- if (song.genre != null) {
- mParent = song.genre
- mQueue = if (shouldShuffle) {
- genShuffle(song.genre!!.songs.toMutableList(), true)
- } else {
- orderSongsInGenre(song.genre!!)
- }
+ val genre = song.genre
+
+ // Dont do this if the genre is null
+ if (genre != null) {
+ mParent = genre
+ mQueue = genre.songs.toMutableList()
} else {
- // If there is no song, then just play the song from ALL_SONGS
playSong(song, PlaybackMode.ALL_SONGS)
+
return
}
}
PlaybackMode.IN_ARTIST -> {
mParent = song.album.artist
- mQueue = if (shouldShuffle) {
- genShuffle(song.album.artist.songs.toMutableList(), true)
- } else {
- orderSongsInArtist(song.album.artist)
- }
+ mQueue = song.album.artist.songs.toMutableList()
}
PlaybackMode.IN_ALBUM -> {
mParent = song.album
- mQueue = if (shouldShuffle) {
- genShuffle(song.album.songs.toMutableList(), true)
- } else {
- orderSongsInAlbum(song.album)
- }
+ mQueue = song.album.songs.toMutableList()
}
}
mMode = mode
- mIsShuffling = shouldShuffle
resetLoopMode()
+ updatePlayback(song)
+ setShuffleStatus(shouldShuffle)
mIndex = mQueue.indexOf(song)
}
@@ -233,30 +216,15 @@ class PlaybackStateManager private constructor() {
when (baseModel) {
is Album -> {
- mQueue = if (mIsShuffling) {
- genShuffle(baseModel.songs.toMutableList(), false)
- } else {
- orderSongsInAlbum(baseModel)
- }
-
+ mQueue = orderSongsInAlbum(baseModel)
mMode = PlaybackMode.IN_ALBUM
}
is Artist -> {
- mQueue = if (mIsShuffling) {
- genShuffle(baseModel.songs.toMutableList(), false)
- } else {
- orderSongsInArtist(baseModel)
- }
-
+ mQueue = orderSongsInArtist(baseModel)
mMode = PlaybackMode.IN_ARTIST
}
is Genre -> {
- mQueue = if (mIsShuffling) {
- genShuffle(baseModel.songs.toMutableList(), false)
- } else {
- orderSongsInGenre(baseModel)
- }
-
+ mQueue = orderSongsInGenre(baseModel)
mMode = PlaybackMode.IN_GENRE
}
@@ -267,6 +235,12 @@ class PlaybackStateManager private constructor() {
resetLoopMode()
updatePlayback(mQueue[0])
+
+ if (mIsShuffling) {
+ genShuffle(false)
+ } else {
+ resetShuffle()
+ }
}
/**
@@ -529,47 +503,42 @@ class PlaybackStateManager private constructor() {
* Shuffle all songs.
*/
fun shuffleAll() {
- val musicStore = MusicStore.getInstance()
-
mIsShuffling = true
- mQueue = genShuffle(musicStore.songs.toMutableList(), false)
mMode = PlaybackMode.ALL_SONGS
mIndex = 0
+ mQueue = musicStore.songs.toMutableList()
+
+ genShuffle(false)
updatePlayback(mQueue[0])
}
/**
* Generate a new shuffled queue.
- * @param queueToShuffle The queue to shuffle
* @param keepSong Whether to keep the currently playing song or to dispose of it
* @param useLastSong (Optional, defaults to false) Whether to use the last song in the queue instead of the current one
* @return A new shuffled queue
*/
private fun genShuffle(
- queueToShuffle: MutableList,
keepSong: Boolean,
useLastSong: Boolean = false
- ): MutableList {
- val newSeed = Random.Default.nextLong()
-
+ ) {
val lastSong = if (useLastSong) mQueue[0] else mSong
- logD("Shuffling queue with seed $newSeed")
+ logD("Shuffling queue")
- queueToShuffle.shuffle(Random(newSeed))
+ mQueue.shuffle()
mIndex = 0
// If specified, make the current song the first member of the queue.
if (keepSong) {
- val song = queueToShuffle.removeAt(queueToShuffle.indexOf(lastSong))
- queueToShuffle.add(0, song)
+ moveQueueItems(mQueue.indexOf(lastSong), 0)
} else {
// Otherwise, just start from the zeroth position in the queue.
- mSong = queueToShuffle[0]
+ mSong = mQueue[0]
}
- return queueToShuffle
+ forceQueueUpdate()
}
/**
@@ -583,7 +552,7 @@ class PlaybackStateManager private constructor() {
PlaybackMode.IN_ARTIST -> orderSongsInArtist(mParent as Artist)
PlaybackMode.IN_ALBUM -> orderSongsInAlbum(mParent as Album)
PlaybackMode.IN_GENRE -> orderSongsInGenre(mParent as Genre)
- PlaybackMode.ALL_SONGS -> MusicStore.getInstance().songs.toMutableList()
+ PlaybackMode.ALL_SONGS -> musicStore.songs.toMutableList()
}
mIndex = mQueue.indexOf(lastSong)
@@ -615,8 +584,7 @@ class PlaybackStateManager private constructor() {
mIsShuffling = value
if (mIsShuffling) {
- mQueue = genShuffle(
- mQueue,
+ genShuffle(
keepSong = true,
useLastSong = mIsInUserQueue
)
@@ -743,8 +711,6 @@ class PlaybackStateManager private constructor() {
* @param playbackState The state to unpack.
*/
private fun unpackFromPlaybackState(playbackState: PlaybackState) {
- val musicStore = MusicStore.getInstance()
-
// Turn the simplified information from PlaybackState into values that can be used
mSong = musicStore.songs.find { it.name == playbackState.songName }
mPosition = playbackState.position
@@ -789,8 +755,6 @@ class PlaybackStateManager private constructor() {
* @param queueItems The list of [QueueItem]s to unpack.
*/
private fun unpackQueue(queueItems: List) {
- val musicStore = MusicStore.getInstance()
-
queueItems.forEach { item ->
// Traverse albums and then album songs instead of just the songs, as its faster.
musicStore.albums.find { it.name == item.albumName }
diff --git a/app/src/main/res/layout/fragment_about.xml b/app/src/main/res/layout/fragment_about.xml
index 86da6361c..92d554174 100644
--- a/app/src/main/res/layout/fragment_about.xml
+++ b/app/src/main/res/layout/fragment_about.xml
@@ -34,7 +34,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/margin_medium"
android:fontFamily="@font/inter_semibold"
- android:text="@string/app_name"
+ android:text="@string/info_app_name"
android:textAppearance="@style/TextAppearance.MaterialComponents.Headline5"
app:layout_constraintBottom_toBottomOf="@+id/about_auxio_icon"
app:layout_constraintEnd_toEndOf="parent"
@@ -49,7 +49,7 @@
android:layout_marginTop="@dimen/margin_small"
android:paddingStart="@dimen/padding_small"
android:paddingEnd="@dimen/padding_small"
- android:text="@string/app_desc"
+ android:text="@string/info_app_desc"
android:textAlignment="center"
android:textAppearance="@style/TextAppearance.MaterialComponents.Body1"
app:layout_constraintEnd_toEndOf="parent"
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index f8e8b9e70..2d9f97786 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,7 +1,10 @@
- Auxio
- A sensible and customizable music player for android.
+
+ Auxio
+ A sensible and customizable music player for android.
+ Music Playback
+ The music playback service for Auxio.
Retry
@@ -39,10 +42,7 @@
Add to queue
Added to queue
Next in Queue
-
- Music Playback
- The music playback service for Auxio.
-
+
About
Version
View on Github