From f7a5a29eeabdf10a29c02bf708815b48b534d3a3 Mon Sep 17 00:00:00 2001 From: Antoine POPINEAU Date: Wed, 24 Jun 2020 19:45:16 +0200 Subject: [PATCH] Pulled some fixes from dev/chromecast (080cce00eec84f1be724d34daa597c406bb1a63a). --- .../apognu/otter/adapters/TracksAdapter.kt | 21 +++++++++++++++---- .../apognu/otter/fragments/AlbumsFragment.kt | 6 ------ .../apognu/otter/playback/PlayerService.kt | 7 +++++-- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/github/apognu/otter/adapters/TracksAdapter.kt b/app/src/main/java/com/github/apognu/otter/adapters/TracksAdapter.kt index f8e4de1..1d0cf46 100644 --- a/app/src/main/java/com/github/apognu/otter/adapters/TracksAdapter.kt +++ b/app/src/main/java/com/github/apognu/otter/adapters/TracksAdapter.kt @@ -158,8 +158,6 @@ class TracksAdapter(private val context: Context?, private val favoriteListener: } notifyItemMoved(oldPosition, newPosition) - - CommandBus.send(Command.MoveFromQueue(oldPosition, newPosition)) } inner class ViewHolder(view: View, val context: Context?) : RecyclerView.ViewHolder(view), View.OnClickListener { @@ -186,6 +184,9 @@ class TracksAdapter(private val context: Context?, private val favoriteListener: } inner class TouchHelperCallback : ItemTouchHelper.Callback() { + var from = -1 + var to = -1 + override fun isLongPressDragEnabled() = false override fun isItemViewSwipeEnabled() = false @@ -194,7 +195,9 @@ class TracksAdapter(private val context: Context?, private val favoriteListener: makeMovementFlags(ItemTouchHelper.UP or ItemTouchHelper.DOWN, 0) override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean { - onItemMove(viewHolder.adapterPosition, target.adapterPosition) + to = target.adapterPosition + + onItemMove(viewHolder.adapterPosition, to) return true } @@ -204,7 +207,10 @@ class TracksAdapter(private val context: Context?, private val favoriteListener: override fun onSelectedChanged(viewHolder: RecyclerView.ViewHolder?, actionState: Int) { if (actionState == ItemTouchHelper.ACTION_STATE_DRAG) { context?.let { - viewHolder?.itemView?.background = ColorDrawable(context.getColor(R.color.colorSelected)) + viewHolder?.let { + from = viewHolder.adapterPosition + viewHolder.itemView.background = ColorDrawable(context.getColor(R.color.colorSelected)) + } } } @@ -212,6 +218,13 @@ class TracksAdapter(private val context: Context?, private val favoriteListener: } override fun clearView(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder) { + if (from != -1 && to != -1) { + CommandBus.send(Command.MoveFromQueue(from, to)) + + from = -1 + to = -1 + } + viewHolder.itemView.background = ColorDrawable(Color.TRANSPARENT) super.clearView(recyclerView, viewHolder) diff --git a/app/src/main/java/com/github/apognu/otter/fragments/AlbumsFragment.kt b/app/src/main/java/com/github/apognu/otter/fragments/AlbumsFragment.kt index 750823b..13ad856 100644 --- a/app/src/main/java/com/github/apognu/otter/fragments/AlbumsFragment.kt +++ b/app/src/main/java/com/github/apognu/otter/fragments/AlbumsFragment.kt @@ -1,12 +1,7 @@ package com.github.apognu.otter.fragments import android.content.Context -import android.graphics.Rect -import android.graphics.drawable.Drawable import android.os.Bundle -import android.text.SpannableString -import android.text.Spanned -import android.text.style.DynamicDrawableSpan import android.view.View import android.view.animation.AccelerateDecelerateInterpolator import androidx.appcompat.app.AppCompatActivity @@ -24,7 +19,6 @@ import com.github.apognu.otter.repositories.AlbumsRepository import com.github.apognu.otter.repositories.ArtistTracksRepository import com.github.apognu.otter.repositories.Repository import com.github.apognu.otter.utils.* -import com.github.apognu.otter.views.LoadingFlotingActionButton import com.squareup.picasso.Picasso import jp.wasabeef.picasso.transformations.RoundedCornersTransformation import kotlinx.android.synthetic.main.fragment_albums.* diff --git a/app/src/main/java/com/github/apognu/otter/playback/PlayerService.kt b/app/src/main/java/com/github/apognu/otter/playback/PlayerService.kt index f395d31..7a445b9 100644 --- a/app/src/main/java/com/github/apognu/otter/playback/PlayerService.kt +++ b/app/src/main/java/com/github/apognu/otter/playback/PlayerService.kt @@ -50,7 +50,7 @@ class PlayerService : Service() { private lateinit var radioPlayer: RadioPlayer override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { - watchEventBus() + if (jobs.isEmpty()) watchEventBus() return START_STICKY } @@ -222,7 +222,10 @@ class PlayerService : Service() { @SuppressLint("NewApi") override fun onDestroy() { - jobs.forEach { it.cancel() } + jobs.forEach { + it.cancel() + jobs.remove(it) + } try { unregisterReceiver(headphonesUnpluggedReceiver)