diff --git a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt
index 1f05107d5..7e3fb4084 100644
--- a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt
@@ -71,6 +71,8 @@ class MainFragment : Fragment() {
binding.lifecycleOwner = this
+ handleCompactPlaybackVisibility(binding, playbackModel.song.value)
+
binding.navBar.itemIconTintList = navTints
binding.navBar.itemTextColor = navTints
@@ -84,17 +86,7 @@ class MainFragment : Fragment() {
// Change CompactPlaybackFragment's visibility here so that an animation occurs.
playbackModel.song.observe(viewLifecycleOwner) {
- if (it == null) {
- Log.d(
- this::class.simpleName,
- "Hiding CompactPlaybackFragment since no song is being played."
- )
-
- binding.compactPlayback.visibility = View.GONE
- playbackModel.disableAnimation()
- } else {
- binding.compactPlayback.visibility = View.VISIBLE
- }
+ handleCompactPlaybackVisibility(binding, it)
}
playbackModel.navToItem.observe(viewLifecycleOwner) {
@@ -161,8 +153,20 @@ class MainFragment : Fragment() {
}
}
- //
-
return false
}
+
+ private fun handleCompactPlaybackVisibility(binding: FragmentMainBinding, song: Song?) {
+ if (song == null) {
+ Log.d(
+ this::class.simpleName,
+ "Hiding CompactPlaybackFragment since no song is being played."
+ )
+
+ binding.compactPlayback.visibility = View.GONE
+ playbackModel.disableAnimation()
+ } else {
+ binding.compactPlayback.visibility = View.VISIBLE
+ }
+ }
}
diff --git a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt
index a1e7cebd1..621716f07 100644
--- a/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/detail/AlbumDetailFragment.kt
@@ -73,21 +73,30 @@ class AlbumDetailFragment : DetailFragment() {
setOnMenuItemClickListener {
when (it.itemId) {
- R.id.action_shuffle -> playbackModel.playAlbum(
- detailModel.currentAlbum.value!!,
+ R.id.action_shuffle -> {
+ playbackModel.playAlbum(
+ detailModel.currentAlbum.value!!, true
+ )
+
true
- )
- R.id.action_play -> playbackModel.playAlbum(
- detailModel.currentAlbum.value!!, false
- )
+ }
+ R.id.action_play -> {
+ playbackModel.playAlbum(
+ detailModel.currentAlbum.value!!, false
+ )
+
+ true
+ }
R.id.action_queue_add -> {
playbackModel.addToUserQueue(detailModel.currentAlbum.value!!)
context.getString(R.string.label_queue_added).createToast(requireContext())
- }
- }
- true
+ true
+ }
+
+ else -> false
+ }
}
}
diff --git a/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt
index 7c2cb10f8..4fb14ae42 100644
--- a/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/detail/ArtistDetailFragment.kt
@@ -76,16 +76,24 @@ class ArtistDetailFragment : DetailFragment() {
setOnMenuItemClickListener {
when (it.itemId) {
- R.id.action_shuffle -> playbackModel.playArtist(
- detailModel.currentArtist.value!!,
- true
- )
- R.id.action_play -> playbackModel.playArtist(
- detailModel.currentArtist.value!!, false
- )
- }
+ R.id.action_shuffle -> {
+ playbackModel.playArtist(
+ detailModel.currentArtist.value!!,
+ true
+ )
- true
+ true
+ }
+ R.id.action_play -> {
+ playbackModel.playArtist(
+ detailModel.currentArtist.value!!, false
+ )
+
+ true
+ }
+
+ else -> false
+ }
}
}
diff --git a/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt b/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt
index d99772c77..01db60f67 100644
--- a/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/detail/GenreDetailFragment.kt
@@ -75,16 +75,24 @@ class GenreDetailFragment : DetailFragment() {
setOnMenuItemClickListener {
when (it.itemId) {
- R.id.action_shuffle -> playbackModel.playGenre(
- detailModel.currentGenre.value!!,
- true
- )
- R.id.action_play -> playbackModel.playGenre(
- detailModel.currentGenre.value!!, false
- )
- }
+ R.id.action_shuffle -> {
+ playbackModel.playGenre(
+ detailModel.currentGenre.value!!,
+ true
+ )
- true
+ true
+ }
+ R.id.action_play -> {
+ playbackModel.playGenre(
+ detailModel.currentGenre.value!!, false
+ )
+
+ true
+ }
+
+ else -> false
+ }
}
}
diff --git a/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt b/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt
index b2a638728..dd3f62199 100644
--- a/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/library/LibraryFragment.kt
@@ -80,6 +80,7 @@ class LibraryFragment : Fragment(), SearchView.OnQueryTextListener {
)
it.expandActionView()
}
+
true
}
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 46b41bf3b..79520a23c 100644
--- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt
@@ -75,9 +75,9 @@ class PlaybackFragment : Fragment(), SeekBar.OnSeekBarChangeListener {
setOnMenuItemClickListener {
if (it.itemId == R.id.action_queue) {
findNavController().navigate(PlaybackFragmentDirections.actionShowQueue())
- }
- true
+ true
+ } else false
}
queueMenuItem = menu.findItem(R.id.action_queue)
diff --git a/app/src/main/java/org/oxycblt/auxio/settings/SettingsListFragment.kt b/app/src/main/java/org/oxycblt/auxio/settings/SettingsListFragment.kt
index 6ca116b6c..854cbd3e7 100644
--- a/app/src/main/java/org/oxycblt/auxio/settings/SettingsListFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/settings/SettingsListFragment.kt
@@ -107,7 +107,6 @@ class SettingsListFragment : PreferenceFragmentCompat() {
)
}
- // TODO: Implement dialog edge-to-edge
layoutManager = LinearLayoutManager(
requireContext()
).also { it.orientation = LinearLayoutManager.HORIZONTAL }
diff --git a/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt b/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt
index 7e284775f..672c623e4 100644
--- a/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt
@@ -6,7 +6,6 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.widget.PopupMenu
-import androidx.appcompat.widget.SearchView
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.recyclerview.widget.LinearLayoutManager
@@ -24,7 +23,7 @@ import org.oxycblt.auxio.ui.setupSongActions
* them.
* @author OxygenCobalt
*/
-class SongsFragment : Fragment(), SearchView.OnQueryTextListener {
+class SongsFragment : Fragment() {
private val playbackModel: PlaybackViewModel by activityViewModels()
override fun onCreateView(
@@ -52,8 +51,9 @@ class SongsFragment : Fragment(), SearchView.OnQueryTextListener {
setOnMenuItemClickListener {
if (it.itemId == R.id.action_shuffle) {
playbackModel.shuffleAll()
- }
- true
+
+ true
+ } else false
}
}
@@ -69,28 +69,16 @@ class SongsFragment : Fragment(), SearchView.OnQueryTextListener {
return binding.root
}
- override fun onQueryTextChange(newText: String?): Boolean {
- return false
- }
-
- override fun onQueryTextSubmit(query: String?): Boolean {
- return false
- }
-
private fun setupFastScroller(binding: FragmentSongsBinding) {
val musicStore = MusicStore.getInstance()
binding.songFastScroll.apply {
var hasAddedNumber = false
- var iters = 0
-
- // TODO: Do selection instead of using iters
setupWithRecyclerView(
binding.songRecycler,
{ pos ->
val item = musicStore.songs[pos]
- iters++
// If the item starts with "the"/"a", then actually use the character after that
// as its initial. Yes, this is stupidly western-centric but the code [hopefully]
@@ -108,31 +96,36 @@ class SongsFragment : Fragment(), SearchView.OnQueryTextListener {
item.name[0].toUpperCase()
}
- // Check if this song starts with a number, if so, then concat it with a single
- // "Numeric" item if haven't already.
- // This check only occurs on the second time the fast scroller is polled for items.
- if (iters >= musicStore.songs.size) {
- if (char.isDigit()) {
- if (!hasAddedNumber) {
- hasAddedNumber = true
-
- return@setupWithRecyclerView FastScrollItemIndicator.Text("#")
- } else {
- return@setupWithRecyclerView null
- }
- }
+ // Use "#" if the character is a digit.
+ if (char.isDigit()) {
+ FastScrollItemIndicator.Text("#")
+ } else {
+ FastScrollItemIndicator.Text(char.toString())
}
-
- FastScrollItemIndicator.Text(
- char.toString()
- )
}
)
+ showIndicator = { indicator, _, _ ->
+ var isGood = true
+
+ // Remove all but the first "#" character
+ if (indicator is FastScrollItemIndicator.Text) {
+ if (indicator.text == "#") {
+ if (hasAddedNumber) {
+ isGood = false
+ }
+
+ hasAddedNumber = true
+ }
+ }
+
+ isGood
+ }
+
useDefaultScroller = false
- itemIndicatorSelectedCallbacks.add(object :
- FastScrollerView.ItemIndicatorSelectedCallback {
+ itemIndicatorSelectedCallbacks.add(
+ object : FastScrollerView.ItemIndicatorSelectedCallback {
override fun onItemIndicatorSelected(
indicator: FastScrollItemIndicator,
indicatorCenterY: Int,
diff --git a/app/src/main/res/layout/fragment_album_detail.xml b/app/src/main/res/layout/fragment_album_detail.xml
index c645642c4..b2acd40a0 100644
--- a/app/src/main/res/layout/fragment_album_detail.xml
+++ b/app/src/main/res/layout/fragment_album_detail.xml
@@ -27,6 +27,7 @@
diff --git a/app/src/main/res/layout/fragment_artist_detail.xml b/app/src/main/res/layout/fragment_artist_detail.xml
index 3ef660143..06ed1c9ca 100644
--- a/app/src/main/res/layout/fragment_artist_detail.xml
+++ b/app/src/main/res/layout/fragment_artist_detail.xml
@@ -27,6 +27,7 @@
diff --git a/app/src/main/res/layout/fragment_genre_detail.xml b/app/src/main/res/layout/fragment_genre_detail.xml
index 962446029..e4d9485b7 100644
--- a/app/src/main/res/layout/fragment_genre_detail.xml
+++ b/app/src/main/res/layout/fragment_genre_detail.xml
@@ -27,6 +27,7 @@
diff --git a/app/src/main/res/layout/fragment_queue.xml b/app/src/main/res/layout/fragment_queue.xml
index 1eedc3b4d..3d23708dd 100644
--- a/app/src/main/res/layout/fragment_queue.xml
+++ b/app/src/main/res/layout/fragment_queue.xml
@@ -14,6 +14,7 @@
diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml
index 0e0862f38..f6380f428 100644
--- a/app/src/main/res/layout/fragment_settings.xml
+++ b/app/src/main/res/layout/fragment_settings.xml
@@ -10,6 +10,7 @@
32dp
+ 50dp
48dp
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 07d82ee79..71f9f46b7 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -26,21 +26,27 @@
+
-
+
+
+
+
+