Solving a bug with the queue state display.

This commit is contained in:
Anonymus Raccoon
2019-06-05 14:29:28 +02:00
parent 7795de6a0b
commit c8ea78284d
3 changed files with 14 additions and 21 deletions

View File

@@ -1280,12 +1280,11 @@ namespace Opus.Api.Services
smallPlayer?.FindViewById<ImageButton>(Resource.Id.spPlay)?.SetImageResource(Resource.Drawable.Play);
MainActivity.instance.FindViewById<ImageButton>(Resource.Id.playButton)?.SetImageResource(Resource.Drawable.Play);
isRunning = false;
Queue.instance?.RefreshCurrent();
if (!UseCastPlayer && player != null && isRunning)
{
isRunning = false;
Intent tmpPauseIntent = new Intent(Application.Context, typeof(MusicPlayer));
tmpPauseIntent.SetAction("Pause");
PendingIntent pauseIntent = PendingIntent.GetService(Application.Context, 0, tmpPauseIntent, PendingIntentFlags.UpdateCurrent);
@@ -1310,10 +1309,7 @@ namespace Opus.Api.Services
}
}
else if(UseCastPlayer && RemotePlayer != null && isRunning)
{
isRunning = false;
RemotePlayer.Pause();
}
SaveTimer(CurrentPosition);
}

View File

@@ -103,30 +103,27 @@ public class Queue : Fragment, RecyclerView.IOnItemTouchListener, PopupMenu.IOnM
public void RefreshCurrent()
{
System.Console.WriteLine("&Queue current refreshing, isPlaying: " + MusicPlayer.isRunning);
ListView.InvalidateItemDecorations();
int first = ((LinearLayoutManager)ListView.GetLayoutManager()).FindFirstVisibleItemPosition();
int last = ((LinearLayoutManager)ListView.GetLayoutManager()).FindLastVisibleItemPosition();
for (int i = first; i <= last; i++)
{
if(i > 0 && MusicPlayer.queue.Count > i - 1)
if (ListView.GetChildViewHolder(((LinearLayoutManager)ListView.GetLayoutManager()).FindViewByPosition(i)) is SongHolder holder)
{
Song song = MusicPlayer.queue[i - 1];
if (ListView.GetChildViewHolder(((LinearLayoutManager)ListView.GetLayoutManager()).FindViewByPosition(i)) is SongHolder holder)
if (MusicPlayer.CurrentID() == i - 1) //The -1 is because the first displayed item of the queue is a header.
{
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));
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;
}
else
holder.status.Visibility = ViewStates.Gone;
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;
}
}
}

View File

@@ -37,9 +37,9 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<AndroidUseSharedRuntime>false</AndroidUseSharedRuntime>
<AndroidUseSharedRuntime>true</AndroidUseSharedRuntime>
<AndroidLinkMode>SdkOnly</AndroidLinkMode>
<EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk>
<EmbedAssembliesIntoApk>false</EmbedAssembliesIntoApk>
<AotAssemblies>false</AotAssemblies>
<EnableLLVM>false</EnableLLVM>
<BundleAssemblies>false</BundleAssemblies>