diff --git a/app/src/main/java/org/oxycblt/auxio/list/menu/MenuViewModel.kt b/app/src/main/java/org/oxycblt/auxio/list/menu/MenuViewModel.kt
index 44af342bd..3e34c1a52 100644
--- a/app/src/main/java/org/oxycblt/auxio/list/menu/MenuViewModel.kt
+++ b/app/src/main/java/org/oxycblt/auxio/list/menu/MenuViewModel.kt
@@ -29,6 +29,7 @@ import org.oxycblt.auxio.util.logW
/**
* Manages the state information for [MenuDialogFragment] implementations.
+ *
* @author Alexander Capehart (OxygenCobalt)
*/
@HiltViewModel
diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackPanelFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackPanelFragment.kt
index 67a343723..89b79ae2d 100644
--- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackPanelFragment.kt
+++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackPanelFragment.kt
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-
+
package org.oxycblt.auxio.playback
import android.content.ActivityNotFoundException
@@ -33,6 +33,8 @@ import androidx.recyclerview.widget.RecyclerView
import androidx.viewpager2.widget.ViewPager2
import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
import dagger.hilt.android.AndroidEntryPoint
+import java.lang.reflect.Field
+import kotlin.math.abs
import org.oxycblt.auxio.R
import org.oxycblt.auxio.databinding.FragmentPlaybackPanelBinding
import org.oxycblt.auxio.detail.DetailViewModel
@@ -53,8 +55,6 @@ import org.oxycblt.auxio.util.logD
import org.oxycblt.auxio.util.share
import org.oxycblt.auxio.util.showToast
import org.oxycblt.auxio.util.systemBarInsetsCompat
-import java.lang.reflect.Field
-import kotlin.math.abs
/**
* A [ViewBindingFragment] more information about the currently playing song, alongside all
@@ -252,8 +252,7 @@ class PlaybackPanelFragment :
is Show.AlbumArtistDecision,
is Show.GenreDetails,
is Show.PlaylistDetails,
- null -> {
- }
+ null -> {}
}
}
@@ -286,9 +285,8 @@ class PlaybackPanelFragment :
super.onPageScrollStateChanged(state)
if (state == ViewPager2.SCROLL_STATE_IDLE &&
targetPosition != RecyclerView.NO_POSITION &&
- targetPosition != viewModel.index.value
- ) {
- viewModel.goto(targetPosition)
+ targetPosition != viewModel.index.value) {
+ viewModel.goto(targetPosition, playIfPaused = false)
}
}
}
diff --git a/app/src/main/java/org/oxycblt/auxio/playback/pager/PlaybackPageListener.kt b/app/src/main/java/org/oxycblt/auxio/playback/pager/PlaybackPageListener.kt
index 6cf93aa22..3a9c56fe1 100644
--- a/app/src/main/java/org/oxycblt/auxio/playback/pager/PlaybackPageListener.kt
+++ b/app/src/main/java/org/oxycblt/auxio/playback/pager/PlaybackPageListener.kt
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-
+
package org.oxycblt.auxio.playback.pager
interface PlaybackPageListener {
diff --git a/app/src/main/java/org/oxycblt/auxio/playback/pager/PlaybackPagerAdapter.kt b/app/src/main/java/org/oxycblt/auxio/playback/pager/PlaybackPagerAdapter.kt
index 1445c3a74..049098794 100644
--- a/app/src/main/java/org/oxycblt/auxio/playback/pager/PlaybackPagerAdapter.kt
+++ b/app/src/main/java/org/oxycblt/auxio/playback/pager/PlaybackPagerAdapter.kt
@@ -24,13 +24,13 @@ import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.RecyclerView
+import kotlin.jvm.internal.Intrinsics
import org.oxycblt.auxio.R
import org.oxycblt.auxio.databinding.ItemPlaybackSongBinding
import org.oxycblt.auxio.list.adapter.FlexibleListAdapter
import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.music.resolveNames
import org.oxycblt.auxio.util.inflater
-import kotlin.jvm.internal.Intrinsics
class PlaybackPagerAdapter(
private val listener: PlaybackPageListener,
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 2db007971..ca3a924c4 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
@@ -88,7 +88,7 @@ class QueueFragment : ViewBindingFragment(), EditClickList
}
override fun onClick(item: Song, viewHolder: RecyclerView.ViewHolder) {
- queueModel.goto(viewHolder.bindingAdapterPosition)
+ queueModel.goto(viewHolder.bindingAdapterPosition, playIfPaused = true)
}
override fun onPickUp(viewHolder: RecyclerView.ViewHolder) {
diff --git a/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueViewModel.kt b/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueViewModel.kt
index 5b1edce73..12a51bbf7 100644
--- a/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueViewModel.kt
+++ b/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueViewModel.kt
@@ -106,13 +106,14 @@ class QueueViewModel @Inject constructor(private val playbackManager: PlaybackSt
*
* @param adapterIndex The index of the queue item to play. Does nothing if the index is out of
* range.
+ * @param playIfPaused Start playing after switching even if it currently is paused
*/
- fun goto(adapterIndex: Int) {
+ fun goto(adapterIndex: Int, playIfPaused: Boolean) {
if (adapterIndex !in queue.value.indices) {
return
}
logD("Going to position $adapterIndex in queue")
- playbackManager.goto(adapterIndex)
+ playbackManager.goto(adapterIndex, playIfPaused || playbackManager.playerState.isPlaying)
}
/**
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 388087653..ecbce22ee 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
@@ -120,8 +120,9 @@ interface PlaybackStateManager {
* Play a [Song] at the given position in the queue.
*
* @param index The position of the [Song] in the queue to start playing.
+ * @param play Whether to start playing after switching to target index
*/
- fun goto(index: Int)
+ fun goto(index: Int, play: Boolean)
/**
* Add [Song]s to the top of the queue.
@@ -426,12 +427,12 @@ class PlaybackStateManagerImpl @Inject constructor() : PlaybackStateManager {
}
@Synchronized
- override fun goto(index: Int) {
+ override fun goto(index: Int, play: Boolean) {
val internalPlayer = internalPlayer ?: return
if (queue.goto(index)) {
logD("Moving to $index")
notifyIndexMoved()
- internalPlayer.loadSong(queue.currentSong, true)
+ internalPlayer.loadSong(queue.currentSong, play)
} else {
logW("$index was not in bounds, could not move to it")
}
diff --git a/app/src/main/java/org/oxycblt/auxio/playback/system/MediaSessionComponent.kt b/app/src/main/java/org/oxycblt/auxio/playback/system/MediaSessionComponent.kt
index 369675f17..b6e0819d0 100644
--- a/app/src/main/java/org/oxycblt/auxio/playback/system/MediaSessionComponent.kt
+++ b/app/src/main/java/org/oxycblt/auxio/playback/system/MediaSessionComponent.kt
@@ -256,7 +256,7 @@ constructor(
}
override fun onSkipToQueueItem(id: Long) {
- playbackManager.goto(id.toInt())
+ playbackManager.goto(id.toInt(), true)
}
override fun onCustomAction(action: String?, extras: Bundle?) {