public async Task <QueueHeader> AddUpdate(QueueHeader queueHeader) { using (var ctx = new MyTurnDb()) { var thisQueueHeader = await ctx.QueueHeader.FindAsync(queueHeader.Id); if (thisQueueHeader == null) { queueHeader.CreateDate = DateTime.Now; ctx.QueueHeader.Add(queueHeader); var task = await ctx.SaveChangesAsync(); return(queueHeader); } else { thisQueueHeader = queueHeader; var task = await ctx.SaveChangesAsync(); return(thisQueueHeader); } } }
public override void OnBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) { if (position == 0) { QueueHeader holder = (QueueHeader)viewHolder; if (!holder.Shuffle.HasOnClickListeners) { holder.Shuffle.Click += (sender, e) => { Intent intent = new Intent(MainActivity.instance, typeof(MusicPlayer)); intent.SetAction("RandomizeQueue"); MainActivity.instance.StartService(intent); }; } if (MusicPlayer.repeat) { holder.Repeat.SetColorFilter(Color.Argb(255, 21, 183, 237), PorterDuff.Mode.Multiply); } else { holder.Repeat.ClearColorFilter(); } if (!holder.Repeat.HasOnClickListeners) { holder.Repeat.Click += (sender, e) => { MusicPlayer.Repeat(); } } ; if (!holder.More.HasOnClickListeners) { holder.More.Click += (sender, e) => { PopupMenu menu = new PopupMenu(MainActivity.instance, holder.More); menu.Inflate(Resource.Menu.queue_more); menu.SetOnMenuItemClickListener(Queue.instance); menu.Show(); }; } return; } if (position + 1 == ItemCount) { QueueFooter holder = (QueueFooter)viewHolder; holder.SwitchButton.Checked = MusicPlayer.useAutoPlay; if ((MusicPlayer.CurrentID() == ItemCount - 2 || MusicPlayer.CurrentID() == ItemCount - 3) && MusicPlayer.useAutoPlay) { holder.Autoplay.Visibility = ViewStates.Visible; if (!holder.ItemView.HasOnClickListeners) { holder.ItemView.Click += (sender, eventArg) => { Intent intent = new Intent(MainActivity.instance, typeof(MusicPlayer)); intent.SetAction("Next"); MainActivity.instance.StartService(intent); } } ; if (MusicPlayer.autoPlay.Count > 0) { holder.RightIcon.Visibility = ViewStates.Visible; Song ap = MusicPlayer.autoPlay[0]; holder.NextTitle.Text = ap.Title; holder.NextTitle.SetTextColor(Color.White); holder.NextTitle.SetBackgroundResource(Android.Resource.Color.Transparent); if (ap.IsYt) { Picasso.With(MainActivity.instance).Load(ap.Album).Placeholder(Resource.Drawable.noAlbum).Transform(new RemoveBlackBorder(true)).Into(holder.NextAlbum); } else { var songCover = Android.Net.Uri.Parse("content://media/external/audio/albumart"); var nextAlbumArtUri = ContentUris.WithAppendedId(songCover, ap.AlbumArt); Picasso.With(MainActivity.instance).Load(nextAlbumArtUri).Placeholder(Resource.Drawable.noAlbum).Resize(400, 400).CenterCrop().Into(holder.NextAlbum); } } else { int count = new Random().Next(6, 15); string title = "a"; while (count > 0) { title += "a"; count--; } holder.NextTitle.Text = title; holder.NextTitle.SetTextColor(Color.Transparent); holder.NextTitle.SetBackgroundResource(Resource.Color.background_material_dark); holder.NextAlbum.SetImageResource(Resource.Color.background_material_dark); holder.RightIcon.Visibility = ViewStates.Gone; } } else { holder.Autoplay.Visibility = ViewStates.Gone; } if (!holder.SwitchButton.HasOnClickListeners) { holder.SwitchButton.Click += (sender, e) => { MusicPlayer.useAutoPlay = !MusicPlayer.useAutoPlay; NotifyItemChanged(ItemCount - 1, "UseAutoplay"); if (MusicPlayer.useAutoPlay) { MusicPlayer.Repeat(false); if (MusicPlayer.autoPlay?.Count == 0) { MusicPlayer.instance.GenerateAutoPlay(false); } } else { MusicPlayer.autoPlay.Clear(); } }; } } else { position--; SongHolder holder = (SongHolder)viewHolder; holder.reorder.SetColorFilter(Color.White); holder.Title.SetTextColor(Color.White); holder.youtubeIcon.SetColorFilter(Color.White); holder.reorder.Visibility = ViewStates.Visible; holder.more.Visibility = ViewStates.Gone; holder.RightButtons.SetBackgroundResource(Resource.Drawable.darkLinear); int dp = MainActivity.instance.DpToPx(5); ((RelativeLayout.LayoutParams)holder.RightButtons.LayoutParameters).RightMargin = dp; holder.TextLayout.SetPadding(dp, 0, dp, 0); if (position == MusicPlayer.CurrentID()) { 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 ? Queue.instance.GetString(Resource.String.playing) : Queue.instance.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; } Song song = MusicPlayer.queue.Count <= position ? null : MusicPlayer.queue[position]; if (song == null) { if (holder.Title.Text.Length == 0) { holder.Title.Text = "aizquruhgqognbq"; } if (holder.Artist.Text.Length == 0) { holder.Artist.Text = "ZJKGNZgzn"; } holder.Title.SetTextColor(Color.Transparent); holder.Title.SetBackgroundResource(Resource.Color.background_material_dark); holder.Artist.SetTextColor(Color.Transparent); holder.Artist.SetBackgroundResource(Resource.Color.background_material_dark); holder.AlbumArt.SetImageResource(Resource.Color.background_material_dark); MusicPlayer.RemotePlayer.MediaQueue.GetItemAtIndex(position); return; } else { holder.Title.SetBackgroundResource(0); holder.Artist.SetBackgroundResource(0); } SpannableString titleText = new SpannableString(song.Title); titleText.SetSpan(new BackgroundColorSpan(Color.ParseColor("#8C000000")), 0, song.Title.Length, SpanTypes.InclusiveInclusive); holder.Title.TextFormatted = titleText; holder.Title.SetMaxLines(2); holder.Artist.Visibility = ViewStates.Gone; if (song.AlbumArt == -1 || song.IsYt) { if (song.Album != null) { Picasso.With(Application.Context).Load(song.Album).Placeholder(Resource.Color.background_material_dark).Transform(new RemoveBlackBorder(true)).Into(holder.AlbumArt); } else { Picasso.With(Application.Context).Load(Resource.Color.background_material_dark).Transform(new RemoveBlackBorder(true)).Into(holder.AlbumArt); } } else { var songCover = Android.Net.Uri.Parse("content://media/external/audio/albumart"); var songAlbumArtUri = ContentUris.WithAppendedId(songCover, song.AlbumArt); Picasso.With(Application.Context).Load(songAlbumArtUri).Placeholder(Resource.Color.background_material_dark).Resize(400, 400).CenterCrop().Into(holder.AlbumArt); } if (song.IsLiveStream) { holder.Live.Visibility = ViewStates.Visible; } else { holder.Live.Visibility = ViewStates.Gone; } if (!holder.reorder.HasOnClickListeners) { holder.reorder.Touch += (sender, e) => { Queue.instance.itemTouchHelper.StartDrag(viewHolder); MainActivity.instance.contentRefresh.Enabled = false; }; } if (song.IsParsed != true && song.IsYt) { holder.youtubeIcon.SetImageResource(Resource.Drawable.needProcessing); holder.youtubeIcon.Visibility = ViewStates.Visible; } else if (song.IsParsed == true && song.IsYt) { holder.youtubeIcon.SetImageResource(Resource.Drawable.PublicIcon); holder.youtubeIcon.Visibility = ViewStates.Visible; } else { holder.youtubeIcon.Visibility = ViewStates.Gone; } } }
public override void OnBindViewHolder(RecyclerView.ViewHolder viewHolder, int position, IList <Java.Lang.Object> payloads) { if (payloads.Count > 0) { if (payloads[0].ToString() == "Repeat") { QueueHeader holder = (QueueHeader)viewHolder; if (MusicPlayer.repeat) { holder.Repeat.SetColorFilter(Color.Argb(255, 21, 183, 237), PorterDuff.Mode.Multiply); } else { holder.Repeat.ClearColorFilter(); } } else if (payloads[0].ToString() == "UseAutoplay") { QueueFooter holder = (QueueFooter)viewHolder; holder.SwitchButton.Checked = MusicPlayer.useAutoPlay; if (MusicPlayer.useAutoPlay && (MusicPlayer.CurrentID() == ItemCount - 2 || MusicPlayer.CurrentID() == ItemCount - 3)) { holder.Autoplay.Visibility = ViewStates.Visible; if (!holder.ItemView.HasOnClickListeners) { holder.ItemView.Click += (sender, eventArg) => { Intent intent = new Intent(MainActivity.instance, typeof(MusicPlayer)); intent.SetAction("Next"); MainActivity.instance.StartService(intent); } } ; if (MusicPlayer.autoPlay.Count > 0) { holder.RightIcon.Visibility = ViewStates.Visible; Song ap = MusicPlayer.autoPlay[0]; holder.NextTitle.Text = ap.Title; holder.NextTitle.SetTextColor(Color.White); holder.NextTitle.SetBackgroundResource(Android.Resource.Color.Transparent); if (ap.IsYt) { Picasso.With(MainActivity.instance).Load(ap.Album).Placeholder(Resource.Drawable.noAlbum).Transform(new RemoveBlackBorder(true)).Into(holder.NextAlbum); } else { var songCover = Android.Net.Uri.Parse("content://media/external/audio/albumart"); var nextAlbumArtUri = ContentUris.WithAppendedId(songCover, ap.AlbumArt); Picasso.With(MainActivity.instance).Load(nextAlbumArtUri).Placeholder(Resource.Drawable.noAlbum).Resize(400, 400).CenterCrop().Into(holder.NextAlbum); } } else { int count = new Random().Next(6, 15); string title = "a"; while (count > 0) { title += "a"; count--; } holder.NextTitle.Text = title; holder.NextTitle.SetTextColor(Color.Transparent); holder.NextTitle.SetBackgroundResource(Resource.Color.background_material_dark); holder.NextAlbum.SetImageResource(Resource.Color.background_material_dark); holder.RightIcon.Visibility = ViewStates.Gone; } } else { holder.Autoplay.Visibility = ViewStates.Gone; return; } } else { SongHolder holder = (SongHolder)viewHolder; if (payloads[0].ToString() == holder.Title.Text) { return; } if (int.TryParse(payloads[0].ToString(), out int payload) && payload == Resource.Drawable.PublicIcon) { if (MusicPlayer.queue[position - 1].IsParsed == true) { holder.youtubeIcon.SetImageResource(Resource.Drawable.PublicIcon); } return; } if (payloads[0].ToString() != null) { Song song = MusicPlayer.queue[position - 1]; if (holder.Title.Text == "" || holder.Title.Text == null) { SpannableString titleText = new SpannableString(song.Title); titleText.SetSpan(new BackgroundColorSpan(Color.ParseColor("#8C000000")), 0, song.Title.Length, SpanTypes.InclusiveInclusive); holder.Title.TextFormatted = titleText; } if (song.IsYt) { var songAlbumArtUri = Android.Net.Uri.Parse(song.Album); Picasso.With(Application.Context).Load(songAlbumArtUri).Placeholder(Resource.Color.background_material_dark).Transform(new RemoveBlackBorder(true)).Into(holder.AlbumArt); } return; } } } base.OnBindViewHolder(viewHolder, position, payloads); }