public void AddQueue() { if (sections[0].SectionTitle != "Queue") { Section queue = new Section("Queue", SectionType.SinglePlaylist, MusicPlayer.queue); sections.Insert(0, queue); adapter?.NotifyItemInserted(0); } }
public async void RefreshFavs() { Section section = sections.Find(x => x.SectionTitle == "Fav"); if (section != null) { ((LineAdapter)section.recycler.GetAdapter())?.Refresh(); } else { List <Song> favorites = await SongManager.GetFavorites(); if (favorites.Count > 0) { int x = MainActivity.instance.HasReadPermission() ? 1 : 0; sections.Insert(sections.Count - x, new Section("Fav", SectionType.SinglePlaylist, favorites)); adapter.NotifyItemInserted(sections.Count - x); } } }
private async Task PopulateView() { if (!populating) { populating = true; sections = new List <Section>(); if (MusicPlayer.UseCastPlayer || (MusicPlayer.queue != null && MusicPlayer.queue?.Count > 0)) { Section queue = new Section("Queue", SectionType.SinglePlaylist, MusicPlayer.queue); sections.Add(queue); } Section shuffle = new Section(Resources.GetString(Resource.String.shuffle), SectionType.Shuffle); sections.Add(shuffle); await Task.Run(() => { if (MainActivity.instance.HasReadPermission()) { if (Looper.MyLooper() == null) { Looper.Prepare(); } Android.Net.Uri musicUri = MediaStore.Audio.Media.ExternalContentUri; List <Song> allSongs = new List <Song>(); CursorLoader cursorLoader = new CursorLoader(MainActivity.instance, musicUri, null, null, null, null); ICursor musicCursor = (ICursor)cursorLoader.LoadInBackground(); if (musicCursor != null && musicCursor.MoveToFirst()) { int titleID = musicCursor.GetColumnIndex(MediaStore.Audio.Media.InterfaceConsts.Title); int artistID = musicCursor.GetColumnIndex(MediaStore.Audio.Media.InterfaceConsts.Artist); int albumID = musicCursor.GetColumnIndex(MediaStore.Audio.Media.InterfaceConsts.Album); int thisID = musicCursor.GetColumnIndex(MediaStore.Audio.Media.InterfaceConsts.Id); int pathID = musicCursor.GetColumnIndex(MediaStore.Audio.Media.InterfaceConsts.Data); do { string Artist = musicCursor.GetString(artistID); string Title = musicCursor.GetString(titleID); string Album = musicCursor.GetString(albumID); long AlbumArt = musicCursor.GetLong(musicCursor.GetColumnIndex(MediaStore.Audio.Albums.InterfaceConsts.AlbumId)); long id = musicCursor.GetLong(thisID); string path = musicCursor.GetString(pathID); if (Title == null) { Title = "Unknown Title"; } if (Artist == null) { Artist = "Unknow Artist"; } if (Album == null) { Album = "Unknow Album"; } allSongs.Add(new Song(Title, Artist, Album, null, AlbumArt, id, path)); }while (musicCursor.MoveToNext()); musicCursor.Close(); } Random r = new Random(); List <Song> songList = allSongs.OrderBy(x => r.Next()).ToList(); if (songList.Count > 0) { Section featured = new Section(Resources.GetString(Resource.String.featured), SectionType.SinglePlaylist, songList.GetRange(0, songList.Count > 50 ? 50 : songList.Count)); sections.Add(featured); } } }); List <Song> favorites = await SongManager.GetFavorites(); if (favorites.Count > 0) { sections.Add(new Section("Fav", SectionType.SinglePlaylist, favorites)); } view.FindViewById(Resource.Id.loading).Visibility = ViewStates.Gone; adapter = new SectionAdapter(sections); ListView.SetAdapter(adapter); adapter.ItemClick += ListView_ItemClick; ListView.SetItemAnimator(new DefaultItemAnimator()); (List <PlaylistItem> playlists, string error) = await PlaylistManager.GetLocalPlaylists(false); if (playlists != null) { (List <PlaylistItem> pl, List <PlaylistItem> sp) = await PlaylistManager.ProcessSyncedPlaylists(playlists); List <PlaylistItem> saved = await PlaylistManager.GetSavedYoutubePlaylists(sp, null); sp.AddRange(saved); sp.AddRange(pl); sections.Add(new Section(GetString(Resource.String.playlists), SectionType.PlaylistList, sp)); adapter.NotifyItemInserted(sections.Count - 1); } else { List <PlaylistItem> saved = await PlaylistManager.GetSavedYoutubePlaylists(null, null); if (saved != null && saved.Count > 0) { sections.Add(new Section(GetString(Resource.String.playlists), SectionType.PlaylistList, saved)); adapter.NotifyItemInserted(sections.Count - 1); } } populating = false; } }