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;
}
}
}