From 0bbcff35eb1ef88a1df286423ebd431d5c90810d Mon Sep 17 00:00:00 2001 From: OxygenCobalt Date: Tue, 19 Jan 2021 14:39:09 -0700 Subject: [PATCH] Fix compact playback visibility issues For some reason the new system I implemented for compact playback visibility suddenly stopped working! Revert to the old system. --- .../java/org/oxycblt/auxio/MainFragment.kt | 5 ++-- .../auxio/playback/CompactPlaybackFragment.kt | 25 +++++++++++++++++++ .../auxio/playback/queue/QueueFragment.kt | 1 + .../playback/state/PlaybackStateManager.kt | 4 +++ .../org/oxycblt/auxio/recycler/SortMode.kt | 8 +++--- .../org/oxycblt/auxio/songs/SongsFragment.kt | 1 + .../java/org/oxycblt/auxio/ui/ActionMenu.kt | 1 + .../org/oxycblt/auxio/ui/InterfaceUtils.kt | 2 +- .../layout-land/fragment_compact_playback.xml | 1 + .../res/layout/fragment_compact_playback.xml | 1 + app/src/main/res/menu/menu_artist_actions.xml | 2 +- app/src/main/res/values/styles.xml | 18 ++++++------- 12 files changed, 52 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt index f37fecc94..90545756d 100644 --- a/app/src/main/java/org/oxycblt/auxio/MainFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/MainFragment.kt @@ -150,8 +150,9 @@ class MainFragment : Fragment() { if (song == null) { logD("Hiding CompactPlaybackFragment since no song is being played.") - binding.compactPlayback.visibility = if (isLandscape(resources)) - View.INVISIBLE else View.GONE + if (!isLandscape(resources)) { + binding.compactPlayback.visibility = View.GONE + } playbackModel.disableAnimation() } else { diff --git a/app/src/main/java/org/oxycblt/auxio/playback/CompactPlaybackFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/CompactPlaybackFragment.kt index 92aacab60..6332e380d 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/CompactPlaybackFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/CompactPlaybackFragment.kt @@ -6,6 +6,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.core.content.ContextCompat +import androidx.core.view.children import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.findNavController @@ -15,6 +16,7 @@ import org.oxycblt.auxio.databinding.FragmentCompactPlaybackBinding import org.oxycblt.auxio.detail.DetailViewModel import org.oxycblt.auxio.logD import org.oxycblt.auxio.music.MusicStore +import org.oxycblt.auxio.ui.isLandscape import org.oxycblt.auxio.ui.memberBinding /** @@ -57,6 +59,10 @@ class CompactPlaybackFragment : Fragment() { } } + if (playbackModel.song.value == null) { + setInvisible(true) + } + // --- VIEWMODEL SETUP --- playbackModel.song.observe(viewLifecycleOwner) { @@ -65,6 +71,9 @@ class CompactPlaybackFragment : Fragment() { binding.song = it binding.playbackProgress.max = it.seconds.toInt() + setInvisible(false) + } else { + setInvisible(true) } } @@ -112,4 +121,20 @@ class CompactPlaybackFragment : Fragment() { } } } + + /** + * Set this fragment to be invisible, if needed. Only runs in landscape mode. + */ + private fun setInvisible(invisible: Boolean) { + // Does not run in landscape + if (!isLandscape(resources)) return + + val visibility = if (invisible) View.INVISIBLE else View.VISIBLE + + binding.playbackLayout.children.forEach { + it.visibility = visibility + } + + binding.root.isEnabled = !invisible + } } diff --git a/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueFragment.kt index 3a806c6dd..e8670b591 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueFragment.kt @@ -66,6 +66,7 @@ class QueueFragment : Fragment() { insets } } else { + // Dont even bother w/edge-to-edge if the navigation bar is on the side binding.root.fitsSystemWindows = true } } 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 c585fc297..7e2329d86 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 @@ -232,6 +232,9 @@ class PlaybackStateManager private constructor() { resetLoopMode() setShuffling(shuffled, keepSong = false) + + logD(mQueue[0].name) + updatePlayback(mQueue[0]) } @@ -253,6 +256,7 @@ class PlaybackStateManager private constructor() { /** * Update the current position. Will not notify any listeners of a seek event, that's what [seekTo] is for. * @param position The new position in millis. + * @see seekTo */ fun setPosition(position: Long) { mSong?.let { diff --git a/app/src/main/java/org/oxycblt/auxio/recycler/SortMode.kt b/app/src/main/java/org/oxycblt/auxio/recycler/SortMode.kt index 0ae47cfd7..0ca470d00 100644 --- a/app/src/main/java/org/oxycblt/auxio/recycler/SortMode.kt +++ b/app/src/main/java/org/oxycblt/auxio/recycler/SortMode.kt @@ -104,8 +104,8 @@ enum class SortMode(@DrawableRes val iconRes: Int) { NUMERIC_UP -> { val list = mutableListOf() - songs.groupBy { it.album }.toSortedMap(compareBy { it.year }).values.forEach { - list.addAll(it.sortedWith(compareBy { it.track })) + songs.groupBy { it.album }.toSortedMap(compareBy { it.year }).values.forEach { items -> + list.addAll(items.sortedWith(compareBy { it.track })) } list @@ -113,8 +113,8 @@ enum class SortMode(@DrawableRes val iconRes: Int) { NUMERIC_DOWN -> { val list = mutableListOf() - songs.groupBy { it.album }.toSortedMap(compareByDescending { it.year }).values.forEach { - list.addAll(it.sortedWith(compareBy { it.track })) + songs.groupBy { it.album }.toSortedMap(compareByDescending { it.year }).values.forEach { items -> + list.addAll(items.sortedWith(compareBy { it.track })) } list 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 93864817a..6b1437ba9 100644 --- a/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/songs/SongsFragment.kt @@ -76,6 +76,7 @@ class SongsFragment : Fragment() { } post { + // Disable fast scrolling if there is nothing to scroll if (computeVerticalScrollRange() < height) { binding.songFastScroll.visibility = View.GONE binding.songFastScrollThumb.visibility = View.GONE diff --git a/app/src/main/java/org/oxycblt/auxio/ui/ActionMenu.kt b/app/src/main/java/org/oxycblt/auxio/ui/ActionMenu.kt index 35aa17139..538b28ba3 100644 --- a/app/src/main/java/org/oxycblt/auxio/ui/ActionMenu.kt +++ b/app/src/main/java/org/oxycblt/auxio/ui/ActionMenu.kt @@ -8,6 +8,7 @@ import androidx.appcompat.widget.PopupMenu import androidx.lifecycle.ViewModelProvider import org.oxycblt.auxio.R import org.oxycblt.auxio.detail.DetailViewModel +import org.oxycblt.auxio.logD import org.oxycblt.auxio.music.Album import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.music.BaseModel diff --git a/app/src/main/java/org/oxycblt/auxio/ui/InterfaceUtils.kt b/app/src/main/java/org/oxycblt/auxio/ui/InterfaceUtils.kt index d9461841b..ce3a845e7 100644 --- a/app/src/main/java/org/oxycblt/auxio/ui/InterfaceUtils.kt +++ b/app/src/main/java/org/oxycblt/auxio/ui/InterfaceUtils.kt @@ -160,7 +160,7 @@ fun Context.getSpans(): Int { } /** - * Check if we are in the "Irregular" landscape mode [e.g landscape, but nav bar is on the sides] + * Check if we are in the "Irregular" landscape mode (e.g landscape, but nav bar is on the sides) * Used to disable most of edge-to-edge if that's the case, as I cant get it to work on this mode. * @return True if we are in the irregular landscape mode, false if not. */ diff --git a/app/src/main/res/layout-land/fragment_compact_playback.xml b/app/src/main/res/layout-land/fragment_compact_playback.xml index 36398077a..d52ee5050 100644 --- a/app/src/main/res/layout-land/fragment_compact_playback.xml +++ b/app/src/main/res/layout-land/fragment_compact_playback.xml @@ -16,6 +16,7 @@ @dimen/padding_play_pause - + \ No newline at end of file