From 875ab2bf219d7a50f7ff397f44041fdfeb3d71ef Mon Sep 17 00:00:00 2001 From: Tristan Roux Date: Sun, 28 Apr 2019 15:20:55 +0200 Subject: [PATCH] Solving the bug with the queue switch to an autoplay item. --- Opus/Code/Api/Services/MusicPlayer.cs | 3 ++- Opus/Code/UI/Fragments/Queue.cs | 25 +++++++++++++++---------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/Opus/Code/Api/Services/MusicPlayer.cs b/Opus/Code/Api/Services/MusicPlayer.cs index 2e82fe5..30dcdce 100644 --- a/Opus/Code/Api/Services/MusicPlayer.cs +++ b/Opus/Code/Api/Services/MusicPlayer.cs @@ -1064,7 +1064,7 @@ namespace Opus.Api.Services Player.instance.Buffering(); if (autoPlay.Count > 0) { - queue.Add(autoPlay[0]); + PlayLastInQueue(autoPlay[0]); UpdateQueueItemDB(queue.Last(), queue.Count - 1); autoPlay.RemoveAt(0); @@ -1100,6 +1100,7 @@ namespace Opus.Api.Services public async void SwitchQueue(int position, bool showPlayer = false, bool StartFromOldPosition = false) { Song song = await GetItem(position); + Console.WriteLine("&Song is parsed: " + song.IsParsed); if(showPlayer) MainActivity.instance.ShowPlayer(); diff --git a/Opus/Code/UI/Fragments/Queue.cs b/Opus/Code/UI/Fragments/Queue.cs index d5a3457..5f170a0 100644 --- a/Opus/Code/UI/Fragments/Queue.cs +++ b/Opus/Code/UI/Fragments/Queue.cs @@ -103,6 +103,7 @@ public class Queue : Fragment, RecyclerView.IOnItemTouchListener, PopupMenu.IOnM public void RefreshCurrent() { + System.Console.WriteLine("&Queue Count: " + MusicPlayer.queue.Count + " Adapter Count: " + adapter.ItemCount); ListView.InvalidateItemDecorations(); int first = ((LinearLayoutManager)ListView.GetLayoutManager()).FindFirstVisibleItemPosition(); @@ -111,20 +112,24 @@ public class Queue : Fragment, RecyclerView.IOnItemTouchListener, PopupMenu.IOnM { if(i > 0 && MusicPlayer.queue.Count > i - 1) { + System.Console.WriteLine("&i: " + i); Song song = MusicPlayer.queue[i - 1]; - SongHolder holder = (SongHolder)ListView.GetChildViewHolder(((LinearLayoutManager)ListView.GetLayoutManager()).FindViewByPosition(i)); - if (MusicPlayer.CurrentID() > -1 && MusicPlayer.queue[MusicPlayer.CurrentID()] == song) + SongHolder holder = ListView.GetChildViewHolder(((LinearLayoutManager)ListView.GetLayoutManager()).FindViewByPosition(i)) as SongHolder; + if(holder != null) { - holder.status.Visibility = ViewStates.Visible; - holder.status.SetTextColor(MusicPlayer.isRunning ? Color.Argb(255, 244, 81, 30) : Color.Argb(255, 66, 165, 245)); + if (MusicPlayer.CurrentID() > -1 && MusicPlayer.queue[MusicPlayer.CurrentID()] == song) + { + holder.status.Visibility = ViewStates.Visible; + holder.status.SetTextColor(MusicPlayer.isRunning ? Color.Argb(255, 244, 81, 30) : Color.Argb(255, 66, 165, 245)); - string status = MusicPlayer.isRunning ? GetString(Resource.String.playing) : GetString(Resource.String.paused); - SpannableString statusText = new SpannableString(status); - statusText.SetSpan(new BackgroundColorSpan(Color.ParseColor("#8C000000")), 0, status.Length, SpanTypes.InclusiveInclusive); - holder.status.TextFormatted = statusText; + string status = MusicPlayer.isRunning ? GetString(Resource.String.playing) : GetString(Resource.String.paused); + SpannableString statusText = new SpannableString(status); + statusText.SetSpan(new BackgroundColorSpan(Color.ParseColor("#8C000000")), 0, status.Length, SpanTypes.InclusiveInclusive); + holder.status.TextFormatted = statusText; + } + else + holder.status.Visibility = ViewStates.Gone; } - else - holder.status.Visibility = ViewStates.Gone; } } }