From d16fc2e44606a352f9f9dec76855ba81da0c8823 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Thu, 29 Dec 2022 13:39:31 -0700 Subject: [PATCH] queue: re-add adaptive divider visibility Re-add the adaptive divider functionality that was accidentally removed prior. --- .github/ISSUE_TEMPLATE/bug-crash-report.yml | 2 +- .../auxio/playback/queue/QueueFragment.kt | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug-crash-report.yml b/.github/ISSUE_TEMPLATE/bug-crash-report.yml index 6f0519f62..0faf9621c 100644 --- a/.github/ISSUE_TEMPLATE/bug-crash-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-crash-report.yml @@ -1,5 +1,5 @@ name: Bug/Crash Report -description: File a bug report +description: Report a problem labels: ["bug"] assignees: - OxygenCobalt 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 9dfbc9962..b86db473e 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 @@ -19,6 +19,7 @@ package org.oxycblt.auxio.playback.queue import android.os.Bundle import android.view.LayoutInflater +import androidx.core.view.isInvisible import androidx.fragment.app.activityViewModels import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.LinearLayoutManager @@ -54,6 +55,18 @@ class QueueFragment : ViewBindingFragment(), QueueAdapter. touchHelper.attachToRecyclerView(this) } + // Sometimes the scroll can change without the listener being updated, so we also + // check for relayout events. + binding.queueRecycler.apply { + addOnLayoutChangeListener { _, _, _, _, _, _, _, _, _ -> updateDivider() } + addOnScrollListener( + object : RecyclerView.OnScrollListener() { + override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { + updateDivider() + } + }) + } + // --- VIEWMODEL SETUP ---- collectImmediately( queueModel.queue, queueModel.index, playbackModel.isPlaying, ::updateQueue) @@ -73,6 +86,13 @@ class QueueFragment : ViewBindingFragment(), QueueAdapter. touchHelper.startDrag(viewHolder) } + private fun updateDivider() { + val binding = requireBinding() + binding.queueDivider.isInvisible = + (binding.queueRecycler.layoutManager as LinearLayoutManager) + .findFirstCompletelyVisibleItemPosition() < 1 + } + private fun updateQueue(queue: List, index: Int, isPlaying: Boolean) { val binding = requireBinding()