Beispiel #1
0
 public void AddQueue()
 {
     if (sections[0].SectionTitle != "Queue")
     {
         Section queue = new Section("Queue", SectionType.SinglePlaylist, MusicPlayer.queue);
         sections.Insert(0, queue);
         adapter?.NotifyItemInserted(0);
     }
 }
Beispiel #2
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);
                }
            }
        }
Beispiel #3
0
        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;
            }
        }