Solving the bug with the queue switch to an autoplay item.

This commit is contained in:
Tristan Roux
2019-04-28 15:20:55 +02:00
parent b0c3849d6b
commit 875ab2bf21
2 changed files with 17 additions and 11 deletions
+2 -1
View File
@@ -1064,7 +1064,7 @@ namespace Opus.Api.Services
Player.instance.Buffering(); Player.instance.Buffering();
if (autoPlay.Count > 0) if (autoPlay.Count > 0)
{ {
queue.Add(autoPlay[0]); PlayLastInQueue(autoPlay[0]);
UpdateQueueItemDB(queue.Last(), queue.Count - 1); UpdateQueueItemDB(queue.Last(), queue.Count - 1);
autoPlay.RemoveAt(0); autoPlay.RemoveAt(0);
@@ -1100,6 +1100,7 @@ namespace Opus.Api.Services
public async void SwitchQueue(int position, bool showPlayer = false, bool StartFromOldPosition = false) public async void SwitchQueue(int position, bool showPlayer = false, bool StartFromOldPosition = false)
{ {
Song song = await GetItem(position); Song song = await GetItem(position);
Console.WriteLine("&Song is parsed: " + song.IsParsed);
if(showPlayer) if(showPlayer)
MainActivity.instance.ShowPlayer(); MainActivity.instance.ShowPlayer();
+15 -10
View File
@@ -103,6 +103,7 @@ public class Queue : Fragment, RecyclerView.IOnItemTouchListener, PopupMenu.IOnM
public void RefreshCurrent() public void RefreshCurrent()
{ {
System.Console.WriteLine("&Queue Count: " + MusicPlayer.queue.Count + " Adapter Count: " + adapter.ItemCount);
ListView.InvalidateItemDecorations(); ListView.InvalidateItemDecorations();
int first = ((LinearLayoutManager)ListView.GetLayoutManager()).FindFirstVisibleItemPosition(); 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) if(i > 0 && MusicPlayer.queue.Count > i - 1)
{ {
System.Console.WriteLine("&i: " + i);
Song song = MusicPlayer.queue[i - 1]; Song song = MusicPlayer.queue[i - 1];
SongHolder holder = (SongHolder)ListView.GetChildViewHolder(((LinearLayoutManager)ListView.GetLayoutManager()).FindViewByPosition(i)); SongHolder holder = ListView.GetChildViewHolder(((LinearLayoutManager)ListView.GetLayoutManager()).FindViewByPosition(i)) as SongHolder;
if (MusicPlayer.CurrentID() > -1 && MusicPlayer.queue[MusicPlayer.CurrentID()] == song) if(holder != null)
{ {
holder.status.Visibility = ViewStates.Visible; if (MusicPlayer.CurrentID() > -1 && MusicPlayer.queue[MusicPlayer.CurrentID()] == song)
holder.status.SetTextColor(MusicPlayer.isRunning ? Color.Argb(255, 244, 81, 30) : Color.Argb(255, 66, 165, 245)); {
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); string status = MusicPlayer.isRunning ? GetString(Resource.String.playing) : GetString(Resource.String.paused);
SpannableString statusText = new SpannableString(status); SpannableString statusText = new SpannableString(status);
statusText.SetSpan(new BackgroundColorSpan(Color.ParseColor("#8C000000")), 0, status.Length, SpanTypes.InclusiveInclusive); statusText.SetSpan(new BackgroundColorSpan(Color.ParseColor("#8C000000")), 0, status.Length, SpanTypes.InclusiveInclusive);
holder.status.TextFormatted = statusText; holder.status.TextFormatted = statusText;
}
else
holder.status.Visibility = ViewStates.Gone;
} }
else
holder.status.Visibility = ViewStates.Gone;
} }
} }
} }