Ejemplo n.º 1
0
        private async void ListView_OnItemSelected(object sender, SelectedItemChangedEventArgs e)
        {
            if (e.SelectedItem != null)
            {
                if (await _devicePermissionServices.RequestDeviceKeepWakePermission())
                {
                    _model.IsPermissionGranted = true;
                }

                if (_model.IsChecklistSelected)
                {
                    var musicFile = ((MusicFile)e.SelectedItem);
                    musicFile.IsPlaylistSelected = true;
                    musicFile.TextColor          = musicFile.IsPlaylistSelected
                        ? Palette._LightGrayD
                        : Palette._ButtonBackgroundGray;

                    var playlistMusicFile = _model.PlaylistMusicFiles.Find(m =>
                                                                           m.Title == musicFile.Title && m.Album == musicFile.Album && m.Artist == musicFile.Artist);
                    if (playlistMusicFile == null)
                    {
                        _model.PlaylistMusicFiles.Add(musicFile);
                    }
                    else
                    {
                        _model.PlaylistMusicFiles.Remove(playlistMusicFile);
                    }

                    _model.MusicFiles = _model.MusicFiles.Select(m =>
                    {
                        m.IsPlaylistSelected = _model.PlaylistMusicFiles.Any(t =>
                                                                             t.AlbumId == m.AlbumId && t.Id == m.Id &&
                                                                             t.Title == m.Title && t.Album == m.Album && t.Artist == m.Artist);
                        m.TextColor = m.IsPlaylistSelected ? Palette._LightGrayD : Palette._ButtonBackgroundGray;
                        return(m);
                    }).ToList();
                }
                else if (!((MusicFile)e.SelectedItem).IsPlaylistSelected)
                {
                    _model.SetActivityResource(showMessage: true, message: "Song does not exist in playlist");
                    return;
                }
                else if (_model.CurrentMusicFile != (MusicFile)e.SelectedItem)
                {
                    var selectedContent = (MusicFile)e.SelectedItem;
                    _model.CurrentMusicFile = selectedContent;
                    int index = _model.MusicFiles.FindIndex(m => m == selectedContent && m == selectedContent);
                    await _model.PlayCurrent(index);
                }
            }

            ListViewPlayer.SelectedItem = null;
        }
        public override async void Init(object obj = null)
        {
            await App.Configuration.InitialAsync(this);

            _model = new AudioPlayerViewModel()
            {
                Root = (RootPage)obj,
                DisplaySortByListAction = DisplaySortByList
            };
            _model.SetActivityResource(false, true);
            BindingContext = _model;
            await _model.GetFilesAsync();
        }