//We give the item and the index since the public "YoutubePlaylists" array is not updated yet. private void YoutubeItemSynced(PlaylistItem item, int syncedPlaylistIndex) { /*The display order is * - Local Header * - Local Playlists * - Youtube Header * - Synced Playlists * Since local header and local playlists are both contained in the "LocalPlaylists" array, to get the position of the syncedPlaylist, * we need to sum the LocalPlaylists count (this sum get the position of the youtube header) and then we add the syncedPlaylistIndex.*/ PlaylistHolder holder = (PlaylistHolder)ListView.FindViewHolderForAdapterPosition(LocalPlaylists.Count + syncedPlaylistIndex); if (holder != null) { holder.Owner.Text = item.Owner; Picasso.With(Application.Context).Load(item.ImageURL).Placeholder(Resource.Color.background_material_dark).Resize(400, 400).CenterCrop().Into(holder.AlbumArt); if (item.HasWritePermission) { holder.edit.Visibility = ViewStates.Visible; } holder.sync.SetImageResource(Resource.Drawable.Sync); holder.sync.Visibility = ViewStates.Visible; holder.SyncLoading.Visibility = ViewStates.Gone; } }
public async void StartSyncing(string playlistName) { int LocalIndex = LocalPlaylists.FindIndex(x => x.Name == playlistName); if (LocalIndex != -1) { LocalPlaylists.RemoveAt(LocalIndex); adapter.NotifyItemRemoved(LocalIndex); if (LocalPlaylists.Count == 1) { LocalPlaylists.Add(new PlaylistItem("EMPTY", -1) { Owner = Resources.GetString(Resource.String.local_playlist_empty) }); adapter.NotifyItemInserted(1); } await Task.Delay(500); } int YoutubeIndex = YoutubePlaylists.FindIndex(x => x.Name == playlistName); if (YoutubeIndex != -1) { YoutubePlaylists[YoutubeIndex].SyncState = SyncState.Loading; PlaylistHolder holder = (PlaylistHolder)ListView.GetChildViewHolder(ListView.GetChildAt(LocalPlaylists.Count + YoutubeIndex)); holder.sync.Visibility = ViewStates.Gone; holder.SyncLoading.Visibility = ViewStates.Visible; } }
private bool Exists(PlaylistHolder data) { foreach (XElement element in doc.Root.Descendants("Playlist")) { if (data.PlaylistName == (string)element.Attribute("Name")) { return(true); } } return(false); }
private bool Exists(PlaylistHolder data) { foreach (var element in Holder) { if (data.PlaylistName == element.PlaylistName) { return(true); } } return(false); }
public void CheckForSync() { for (int i = 1; i < YoutubePlaylists.Count; i++) { if (YoutubePlaylists[i].SyncState != SyncState.False && YoutubePlaylists[i].SyncState != SyncState.Error && Downloader.queue.Find(x => x.PlaylistName == YoutubePlaylists[i].Name && (x.State == DownloadState.Downloading || x.State == DownloadState.Initialization || x.State == DownloadState.MetaData || x.State == DownloadState.None)) == null) { YoutubePlaylists[i].SyncState = SyncState.True; PlaylistHolder holder = (PlaylistHolder)ListView.GetChildViewHolder(ListView.GetChildAt(LocalPlaylists.Count + i)); holder.SyncLoading.Visibility = ViewStates.Gone; holder.sync.SetImageResource(Resource.Drawable.Sync); holder.sync.Visibility = ViewStates.Visible; } } }
private void SyncError() { for (int i = 1; i < YoutubePlaylists.Count; i++) { if (YoutubePlaylists[i].SyncState == SyncState.Loading) { YoutubePlaylists[i].SyncState = SyncState.Error; PlaylistHolder holder = (PlaylistHolder)ListView.GetChildViewHolder(ListView.GetChildAt(LocalPlaylists.Count + i)); holder.sync.SetImageResource(Resource.Drawable.SyncError); holder.sync.Visibility = ViewStates.Visible; holder.SyncLoading.Visibility = ViewStates.Gone; } } }
/// <summary> /// Removes a playlist /// </summary> /// <param name="OtobeRemoved">PlaylistHolder to remove</param> public void RemoveItem(object OtobeRemoved) { try { PlaylistHolder datastream = (PlaylistHolder)OtobeRemoved; if (!Exists(datastream)) { return; } doc.Root.Elements("Playlist").Where(x => (string)x.Attribute("Name") == datastream.PlaylistName).Remove(); doc.Save(_filepath); } catch (InvalidCastException ex) { throw new WrongParametersException("Object is not of type PlaylistHolder", ex.StackTrace); } }
/// <summary> /// Adds a playlist /// </summary> /// <param name="OtobeAdded">PlaylistHolder to add</param> public void AddItem(object OtobeAdded) { try { PlaylistHolder datastream = (PlaylistHolder)OtobeAdded; if (Exists(datastream)) { return; } Holder.Add(datastream); File.WriteAllText(_filepath, JsonConvert.SerializeObject(Holder)); } catch (InvalidCastException ex) { throw new WrongParametersException("Object is not of type PlaylistHolder", ex.StackTrace); } }
/// <summary> /// Adds a playlist /// </summary> /// <param name="OtobeAdded">PlaylistHolder to add</param> public void AddItem(object OtobeAdded) { try { PlaylistHolder datastream = (PlaylistHolder)OtobeAdded; if (Exists(datastream)) { return; } XElement element = new XElement("Playlist", new object[] { new XAttribute("Name", datastream.PlaylistName), new XAttribute("Path", datastream.PlaylistPath) }); doc.Root.Add(element); doc.Save(_filepath); } catch (InvalidCastException ex) { throw new WrongParametersException("Object is not of type PlaylistHolder", ex.StackTrace); } }
public override void OnBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) { //Headers if (position == 0) { HeaderHolder holder = (HeaderHolder)viewHolder; holder.headerText.Text = MainActivity.instance.Resources.GetString(Resource.String.local_playlists); } else if (position - LocalPlaylists.Count == 0) { HeaderHolder holder = (HeaderHolder)viewHolder; holder.headerText.Text = MainActivity.instance.Resources.GetString(Resource.String.youtube_playlists); } //Empty views else if (position == 1 && LocalPlaylists[1].Name == "EMPTY") { EmptyHolder holder = (EmptyHolder)viewHolder; holder.text.Text = LocalPlaylists[1].Owner; } else if (position - LocalPlaylists.Count == 1 && YoutubePlaylists[1].Name == "EMPTY") { EmptyHolder holder = (EmptyHolder)viewHolder; holder.text.Text = YoutubePlaylists[1].Owner; } //End button else if (position == LocalPlaylists.Count + YoutubePlaylists.Count) { UslessHolder holder = (UslessHolder)viewHolder; holder.ItemView.FindViewById <ImageView>(Resource.Id.icon).SetImageResource(Resource.Drawable.PlaylistAdd); holder.ItemView.FindViewById <TextView>(Resource.Id.text).Text = MainActivity.instance.GetString(Resource.String.add_playlist); float scale = MainActivity.instance.Resources.DisplayMetrics.Density; if (position + 1 == YoutubePlaylists.Count + LocalPlaylists.Count) { holder.ItemView.SetPadding((int)(8 * scale + 0.5f), (int)(8 * scale + 0.5f), (int)(8 * scale + 0.5f), listPadding); } else { holder.ItemView.SetPadding((int)(8 * scale + 0.5f), (int)(8 * scale + 0.5f), (int)(8 * scale + 0.5f), (int)(8 * scale + 0.5f)); } } //Loading else if (position >= LocalPlaylists.Count && YoutubePlaylists[position - LocalPlaylists.Count].Name == "Loading" && YoutubePlaylists[position - LocalPlaylists.Count].YoutubeID == null) { } //Error views else if (position < LocalPlaylists.Count && LocalPlaylists[position].Name == "Error" && LocalPlaylists[position].LocalID == -1) { EmptyHolder holder = (EmptyHolder)viewHolder; if (Build.VERSION.SdkInt >= BuildVersionCodes.N) { holder.text.TextFormatted = Html.FromHtml(LocalPlaylists[position].Owner, FromHtmlOptions.OptionUseCssColors); } else #pragma warning disable CS0618 // Type or member is obsolete { holder.text.TextFormatted = Html.FromHtml(LocalPlaylists[position].Owner); } #pragma warning restore CS0618 // Type or member is obsolete if (!holder.text.HasOnClickListeners) { holder.text.Click += (s, e) => { Playlist.instance.RefreshLocalPlaylists(); }; } } else if (position >= LocalPlaylists.Count && YoutubePlaylists[position - LocalPlaylists.Count].Name == "Error" && YoutubePlaylists[position - LocalPlaylists.Count].YoutubeID == null) { EmptyHolder holder = (EmptyHolder)viewHolder; if (Build.VERSION.SdkInt >= BuildVersionCodes.N) { holder.text.TextFormatted = Html.FromHtml(YoutubePlaylists[position - LocalPlaylists.Count].Owner, FromHtmlOptions.OptionUseCssColors); } else #pragma warning disable CS0618 // Type or member is obsolete { holder.text.TextFormatted = Html.FromHtml(YoutubePlaylists[position - LocalPlaylists.Count].Owner); } #pragma warning restore CS0618 // Type or member is obsolete if (!holder.text.HasOnClickListeners) { holder.text.Click += (s, e) => { if (YoutubePlaylists[position - LocalPlaylists.Count].HasWritePermission) { MainActivity.instance.Login(true, true, true); } }; } } //Playlists binding else if (LocalPlaylists.Count >= position) { TwoLineHolder holder = (TwoLineHolder)viewHolder; holder.Line1.Text = LocalPlaylists[position].Name; holder.Line2.Text = LocalPlaylists[position].Count.ToString() + " " + (LocalPlaylists[position].Count < 2 ? MainActivity.instance.GetString(Resource.String.element) : MainActivity.instance.GetString(Resource.String.elements)); if (!holder.more.HasOnClickListeners) { holder.more.Click += (sender, e) => { Playlist.instance.More(holder.AdapterPosition); }; } if (LocalPlaylists[position].SyncState == SyncState.Error) { holder.sync.Visibility = ViewStates.Visible; } else { holder.sync.Visibility = ViewStates.Gone; } } else if (position > LocalPlaylists.Count && YoutubePlaylists.Count >= position - LocalPlaylists.Count) { PlaylistHolder holder = (PlaylistHolder)viewHolder; PlaylistItem playlist = YoutubePlaylists[position - LocalPlaylists.Count]; holder.Title.Text = playlist.Name; Picasso.With(Application.Context).Load(playlist.ImageURL).Placeholder(Resource.Color.placeholder).Transform(new RemoveBlackBorder(true)).Into(holder.AlbumArt); if (playlist.Owner == null) { holder.Owner.Text = " "; holder.Owner.SetTextColor(Color.Transparent); holder.Owner.SetBackgroundResource(Resource.Color.placeholder); } else { holder.Owner.Text = playlist.Owner; holder.Owner.SetBackgroundColor(Color.Transparent); Color color; TypedValue value = new TypedValue(); if (MainActivity.instance.Theme.ResolveAttribute(Android.Resource.Attribute.TextColor, value, true)) { color = Color.ParseColor("#" + Java.Lang.Integer.ToHexString(value.Data)); } else { color = Color.Black; } holder.Owner.SetTextColor(color); } if (playlist.HasWritePermission) { holder.edit.Visibility = ViewStates.Visible; } else { holder.edit.Visibility = ViewStates.Gone; } if (playlist.SyncState == SyncState.Loading || Downloader.queue.Find(x => x.PlaylistName == playlist.Name && (x.State == DownloadState.Downloading || x.State == DownloadState.Initialization || x.State == DownloadState.MetaData || x.State == DownloadState.None)) != null) { holder.sync.Visibility = ViewStates.Gone; holder.SyncLoading.Visibility = ViewStates.Visible; } else if (playlist.SyncState == SyncState.True) { holder.sync.SetImageResource(Resource.Drawable.Sync); holder.sync.Visibility = ViewStates.Visible; holder.SyncLoading.Visibility = ViewStates.Gone; } else if (playlist.SyncState == SyncState.Error) { holder.sync.SetImageResource(Resource.Drawable.SyncError); holder.sync.Visibility = ViewStates.Visible; holder.SyncLoading.Visibility = ViewStates.Gone; } else if (playlist.SyncState == SyncState.False) { holder.sync.Visibility = ViewStates.Gone; holder.SyncLoading.Visibility = ViewStates.Gone; } if (!holder.more.HasOnClickListeners) { holder.more.Click += (sender, e) => { Playlist.instance.More(holder.AdapterPosition); }; } } }
public void More(int Position) { bool local = Position <= LocalPlaylists.Count; PlaylistItem item = local ? LocalPlaylists[Position] : YoutubePlaylists[Position - LocalPlaylists.Count]; BottomSheetDialog bottomSheet = new BottomSheetDialog(MainActivity.instance); View bottomView = LayoutInflater.Inflate(Resource.Layout.BottomSheet, null); bottomView.FindViewById <TextView>(Resource.Id.bsTitle).Text = item.Name; if (!local || item.SyncState != SyncState.False) { bottomView.FindViewById <TextView>(Resource.Id.bsArtist).Text = item.Owner; Picasso.With(MainActivity.instance).Load(item.ImageURL).Placeholder(Resource.Color.background_material_dark).Transform(new RemoveBlackBorder(true)).Into(bottomView.FindViewById <ImageView>(Resource.Id.bsArt)); } else { bottomView.FindViewById <TextView>(Resource.Id.bsArtist).Text = item.Count + " element" + (item.Count == 1 ? "" : "s"); bottomView.FindViewById <ImageView>(Resource.Id.bsArt).Visibility = ViewStates.Gone; } bottomSheet.SetContentView(bottomView); if (item.SyncState == SyncState.Error) { bottomSheet.FindViewById <ListView>(Resource.Id.bsItems).Adapter = new BottomSheetAdapter(MainActivity.instance, Resource.Layout.BottomSheetText, new List <BottomSheetAction> { //new BottomSheetAction(Resource.Drawable.SyncDisabled, Resources.GetString(Resource.String.stop_sync), (sender, eventArg) => //{ // PlaylistManager.StopSyncingDialog(item, () => // { // PlaylistItem LocalPlaylist = new PlaylistItem(YoutubePlaylists[Position - LocalPlaylists.Count].Name, item.LocalID, YoutubePlaylists[Position - LocalPlaylists.Count].Count); // LocalPlaylists.Add(LocalPlaylist); // if (LocalPlaylists.Count == 3 && LocalPlaylists[1].Name == "EMPTY") // { // LocalPlaylists.RemoveAt(1); // adapter.NotifyItemChanged(1); // } // else // adapter.NotifyItemInserted(LocalPlaylists.Count); // YoutubePlaylists[Position - LocalPlaylists.Count].LocalID = 0; // YoutubePlaylists[Position - LocalPlaylists.Count].SyncState = SyncState.False; // PlaylistHolder holder = (PlaylistHolder)ListView.GetChildViewHolder(ListView.GetChildAt(Position)); // holder.sync.Visibility = ViewStates.Gone; // holder.SyncLoading.Visibility = ViewStates.Gone; // }); // bottomSheet.Dismiss(); //}), new BottomSheetAction(Resource.Drawable.Delete, Resources.GetString(Resource.String.delete), (sender, eventArg) => { PlaylistManager.Delete(item, () => { if (local) { LocalPlaylists.RemoveAt(Position); adapter.NotifyItemRemoved(Position); if (LocalPlaylists.Count == 1) { LocalPlaylists.Add(new PlaylistItem("EMPTY", -1) { Owner = Resources.GetString(Resource.String.local_playlist_empty) }); adapter.NotifyItemInserted(1); } } else { YoutubePlaylists.RemoveAt(Position - LocalPlaylists.Count); adapter.NotifyItemRemoved(Position); if (YoutubePlaylists.Count == 1) { YoutubePlaylists.Add(new PlaylistItem("EMPTY", null) { Owner = Resources.GetString(Resource.String.youtube_playlist_empty) }); adapter.NotifyItemInserted(LocalPlaylists.Count + YoutubePlaylists.Count); } } }); bottomSheet.Dismiss(); }) }); bottomSheet.Show(); return; } List <BottomSheetAction> actions = new List <BottomSheetAction> { new BottomSheetAction(Resource.Drawable.Play, Resources.GetString(Resource.String.play_in_order), (sender, eventArg) => { PlaylistManager.PlayInOrder(item); bottomSheet.Dismiss(); }), new BottomSheetAction(Resource.Drawable.Shuffle, Resources.GetString(Resource.String.random_play), (sender, eventArg) => { PlaylistManager.Shuffle(item); bottomSheet.Dismiss(); }), new BottomSheetAction(Resource.Drawable.Queue, Resources.GetString(Resource.String.add_to_queue), (sender, eventArg) => { PlaylistManager.AddToQueue(item); bottomSheet.Dismiss(); }) }; if (local || item.HasWritePermission) { actions.AddRange(new BottomSheetAction[] { new BottomSheetAction(Resource.Drawable.Edit, Resources.GetString(Resource.String.rename), (sender, eventArg) => { PlaylistManager.Rename(item, () => { adapter.NotifyItemChanged(Position); }); bottomSheet.Dismiss(); }), new BottomSheetAction(Resource.Drawable.Delete, Resources.GetString(Resource.String.delete), (sender, eventArg) => { PlaylistManager.Delete(item, () => { if (local) { LocalPlaylists.RemoveAt(Position); adapter.NotifyItemRemoved(Position); if (LocalPlaylists.Count == 1) { LocalPlaylists.Add(new PlaylistItem("EMPTY", -1) { Owner = Resources.GetString(Resource.String.local_playlist_empty) }); adapter.NotifyItemInserted(1); } } else { YoutubePlaylists.RemoveAt(Position - LocalPlaylists.Count); adapter.NotifyItemRemoved(Position); if (YoutubePlaylists.Count == 1) { YoutubePlaylists.Add(new PlaylistItem("EMPTY", null) { Owner = Resources.GetString(Resource.String.youtube_playlist_empty) }); adapter.NotifyItemInserted(LocalPlaylists.Count + YoutubePlaylists.Count); } } }); bottomSheet.Dismiss(); }) }); } if (item.SyncState == SyncState.True) { actions.AddRange(new BottomSheetAction[] { new BottomSheetAction(Resource.Drawable.Sync, Resources.GetString(Resource.String.sync_now), (sender, eventArg) => { YoutubeManager.DownloadPlaylist(item, true, true); bottomSheet.Dismiss(); }), new BottomSheetAction(Resource.Drawable.SyncDisabled, Resources.GetString(Resource.String.stop_sync), (sender, eventArg) => { PlaylistManager.StopSyncingDialog(item, () => { PlaylistItem LocalPlaylist = new PlaylistItem(YoutubePlaylists[Position - LocalPlaylists.Count].Name, item.LocalID, YoutubePlaylists[Position - LocalPlaylists.Count].Count); LocalPlaylists.Add(LocalPlaylist); if (LocalPlaylists.Count == 3 && LocalPlaylists[1].Name == "EMPTY") { LocalPlaylists.RemoveAt(1); adapter.NotifyItemChanged(1); } else { adapter.NotifyItemInserted(LocalPlaylists.Count); } YoutubePlaylists[Position - LocalPlaylists.Count].LocalID = 0; YoutubePlaylists[Position - LocalPlaylists.Count].SyncState = SyncState.False; PlaylistHolder holder = (PlaylistHolder)ListView.GetChildViewHolder(ListView.GetChildAt(Position)); holder.sync.Visibility = ViewStates.Gone; holder.SyncLoading.Visibility = ViewStates.Gone; }); bottomSheet.Dismiss(); }) }); } else if (!local) { actions.Add(new BottomSheetAction(Resource.Drawable.Sync, Resources.GetString(Resource.String.sync), (sender, eventArg) => { YoutubeManager.DownloadPlaylist(item, true, true); bottomSheet.Dismiss(); })); if (!item.HasWritePermission) { actions.Add(new BottomSheetAction(Resource.Drawable.Delete, Resources.GetString(Resource.String.unfork), (sender, eventArg) => { if (item.SyncState == SyncState.Error) { PlaylistManager.StopSyncing(item); } PlaylistManager.Unfork(item); YoutubePlaylists.RemoveAt(Position - LocalPlaylists.Count); adapter.NotifyItemRemoved(Position); bottomSheet.Dismiss(); })); } } bottomSheet.FindViewById <ListView>(Resource.Id.bsItems).Adapter = new BottomSheetAdapter(MainActivity.instance, Resource.Layout.BottomSheetText, actions); bottomSheet.Show(); }
public override void OnBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) { if (items[position].Kind == YtKind.Video) { SongHolder holder = (SongHolder)viewHolder; Song song = items[position].song; holder.Title.Text = song.Title; holder.Artist.Text = song.Artist; holder.reorder.Visibility = ViewStates.Gone; var songAlbumArtUri = Android.Net.Uri.Parse(song.Album); Picasso.With(Android.App.Application.Context).Load(songAlbumArtUri).Placeholder(Resource.Color.placeholder).Transform(new RemoveBlackBorder(true)).Into(holder.AlbumArt); holder.more.Tag = position; if (!holder.more.HasOnClickListeners) { holder.more.Click += (sender, e) => { int tagPosition = (int)((ImageView)sender).Tag; MainActivity.instance.More(items[tagPosition].song); }; } if (song.IsLiveStream) { holder.Live.Visibility = ViewStates.Visible; } else { holder.Live.Visibility = ViewStates.Gone; } float scale = MainActivity.instance.Resources.DisplayMetrics.Density; if (position + 1 == items.Count) { holder.ItemView.SetPadding((int)(8 * scale + 0.5f), (int)(8 * scale + 0.5f), (int)(8 * scale + 0.5f), listPadding); LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)holder.more.LayoutParameters; layoutParams.SetMargins(0, 0, 0, listPadding); holder.more.LayoutParameters = layoutParams; } else { holder.ItemView.SetPadding((int)(8 * scale + 0.5f), (int)(8 * scale + 0.5f), (int)(8 * scale + 0.5f), (int)(8 * scale + 0.5f)); LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)holder.more.LayoutParameters; layoutParams.SetMargins(0, 0, 0, 0); holder.more.LayoutParameters = layoutParams; } } else if (items[position].Kind == YtKind.Playlist) { PlaylistHolder holder = (PlaylistHolder)viewHolder; PlaylistItem playlist = items[position].playlist; holder.Title.Text = playlist.Name; holder.Owner.Text = playlist.Owner; var songAlbumArtUri = Android.Net.Uri.Parse(playlist.ImageURL); Picasso.With(Android.App.Application.Context).Load(songAlbumArtUri).Placeholder(Resource.Color.placeholder).Transform(new RemoveBlackBorder(true)).Into(holder.AlbumArt); holder.more.Tag = position; if (!holder.more.HasOnClickListeners) { holder.more.Click += (sender, e) => { int tagPosition = (int)((ImageView)sender).Tag; YoutubeSearch.instances[0].PlaylistMore(items[tagPosition].playlist); }; } } else if (items[position].Kind == YtKind.Channel) { RecyclerChannelHolder holder = (RecyclerChannelHolder)viewHolder; Channel channel = items[position].channel; holder.Title.Text = channel.Name; Picasso.With(Android.App.Application.Context).Load(channel.ImageURL).Transform(new CircleTransformation(false)).Into(holder.AlbumArt); if (!holder.action.HasOnClickListeners) { holder.action.Click += (sender, e) => { YoutubeManager.MixFromChannel(channel.YoutubeID); }; } } else if (items[position].Kind == YtKind.ChannelPreview) { ChannelPreviewHolder holder = (ChannelPreviewHolder)viewHolder; Channel channel = items[position].channel; holder.Name.Text = channel.Name; Picasso.With(Android.App.Application.Context).Load(channel.ImageURL).Placeholder(Resource.Color.placeholder).Transform(new CircleTransformation(true)).Into(holder.Logo); DisplayMetrics displayMetrics = new DisplayMetrics(); MainActivity.instance.WindowManager.DefaultDisplay.GetMetrics(displayMetrics); int wholeWidth = (displayMetrics.WidthPixels - MainActivity.instance.DpToPx(15)) / 2; int mixHeight = (int)(wholeWidth * 0.5625); /// width / 16 */ 9 holder.MixOne.LayoutParameters.Height = mixHeight; holder.MixOne.RequestLayout(); holder.MixTwo.LayoutParameters.Height = mixHeight; holder.ChannelLogo.LayoutParameters.Height = mixHeight * 2; Picasso.With(Android.App.Application.Context).Load(channel.ImageURL).Placeholder(Resource.Color.placeholder).Fit().CenterCrop().Into(holder.ChannelLogo); List <YtFile> files = items.FindAll(x => x.Kind == YtKind.Video && x.song.Artist == channel.Name); if (files.Count > 0) { Picasso.With(Android.App.Application.Context).Load(files[0].song.Album).Placeholder(Resource.Color.placeholder).Transform(new RemoveBlackBorder()).Into(holder.MixOne); } if (files.Count > 1) { Picasso.With(Android.App.Application.Context).Load(files[1].song.Album).Placeholder(Resource.Color.placeholder).Transform(new RemoveBlackBorder()).Into(holder.MixTwo); } if (!holder.ChannelHolder.HasOnClickListeners) { holder.ChannelHolder.Click += (sender, e) => { MainActivity.instance.menu.FindItem(Resource.Id.search).ActionView.Focusable = false; MainActivity.instance.menu.FindItem(Resource.Id.search).CollapseActionView(); MainActivity.instance.menu.FindItem(Resource.Id.search).ActionView.Focusable = true; MainActivity.instance.FindViewById(Resource.Id.tabs).Visibility = ViewStates.Gone; MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, ChannelDetails.NewInstance(channel)).AddToBackStack("Channel Details").Commit(); }; } if (!holder.MixHolder.HasOnClickListeners) { holder.MixHolder.Click += (sender, e) => { YoutubeManager.MixFromChannel(channel.YoutubeID); }; } } }
/// <summary> /// Initializes a new instance of XmlPlaylistsHolderParser by creating a new xml file /// </summary> /// <param name="filepath">The path to create the xml file</param> /// <param name="holder">Data to add</param> public XmlPlaylistsHolderParser(string filepath, string path, PlaylistHolder holder) { this._filepath = filepath; CreateXml(holder, path); }