コード例 #1
0
        async void AddToPlaylist(PlaylistFile playlist)
        {
            try
            {
                if (playlist.TracksFiles.Any(t => t == Track))
                {
                    return;
                }
                Track.PlaylistId = playlist.Id;
                playlist.TracksFiles.Add(Track);
                await Services.PlaylistsService.SavePlaylist(playlist);

                var index = StaticContent.Music.IndexOf(Track);
                var track = StaticContent.Music[index];
                track.PlaylistId = playlist.Id;
                await MusicFilesService.UpdateMusicCollection();
            }catch (Exception e)
            {
                await ContentDialogService.Show(new ExceptionDialog("Невозможно добавить трек в плейлист", "Возможно, плейлиста не существует или трек был удален", e));
            }
        }
コード例 #2
0
        public TrackControl()
        {
            this.InitializeComponent();

            PlayCommand = new RelayCommand(async() =>
            {
                if (Track.IsLocal)
                {
                    await PlayMusicService.PlayMusicForLibrary(Track, 1);
                }
                else
                {
                    await MusicService.PlayMusic(Track, 1);
                }
            });



            DeleteCommand = new RelayCommand(async() =>
            {
                try
                {
                    if (Track.IsLocal)
                    {
                        StaticContent.Music.Remove(Track);
                        AudioFile trackByPlaylist = null;
                        if (Track.PlaylistId != 0)
                        {
                            var playlist    = await Services.PlaylistsService.GetById(Track.PlaylistId);
                            trackByPlaylist = playlist.TracksFiles.Single(t => t.SourceString == Track.SourceString);
                            playlist.TracksFiles.Remove(trackByPlaylist);
                            await Services.PlaylistsService.SavePlaylist(playlist);
                        }
                        if (trackByPlaylist != null)
                        {
                            if (trackByPlaylist.Source == null)
                            {
                                trackByPlaylist.Source = await StorageFile.GetFileFromPathAsync(Track.SourceString);
                            }
                            await trackByPlaylist.Source.DeleteAsync();
                        }
                        else
                        {
                            if (Track.Source == null)
                            {
                                Track.Source = await StorageFile.GetFileFromPathAsync(Track.SourceString);
                            }
                            await Track.Source.DeleteAsync();
                        }

                        await MusicFilesService.UpdateMusicCollection();
                    }
                    else
                    {
                        //TODO: удаление трека ебаный врот
                    }
                }catch (Exception e)
                {
                    await ContentDialogService.Show(new ExceptionDialog("Невозможно удалить этот трек", "Возможно, этот трек был уже удален.", e));
                }
            });

            AddToFavoriteCommand = new RelayCommand(async() =>
            {
                try
                {
                    if (Track.IsLocal)
                    {
                        var playlist = await Services.PlaylistsService.GetById(2);
                        if (playlist.TracksFiles.Any(t => t.SourceString == Track.SourceString))
                        {
                            var dialog = new MessageDialog("Данный трек уже добавлен в избранное", "Ошибка при добавлении в избранное");
                            await dialog.ShowAsync();
                        }
                        else
                        {
                            Like.Visibility    = Visibility.Collapsed;
                            LikeAdd.Visibility = Visibility.Visible;
                            Track.IsFavorite   = true;
                            playlist.TracksFiles.Add(Track);
                            await Services.PlaylistsService.SavePlaylist(playlist);
                        }
                    }
                    else
                    {
                    }
                }catch (Exception e)
                {
                    await ContentDialogService.Show(new ExceptionDialog("Невозможно добавить трек в избранное", "Возможно, этот трек поврежден или не существует плейлиста, если ошибка будет повторяться, переустановите приложение.", e));
                }
            });

            RemoveFavoriteCommand = new RelayCommand(() =>
            {
            });

            AddOnLibraryCommand = new RelayCommand(async() =>
            {
                try
                {
                    await Fooxboy.MusicX.Core.VKontakte.Music.Add.ToLibrary(Track.Id, Track.AccessKey);
                    await new MessageDialog("Трек добавлен в Вашу библиотеку").ShowAsync();
                }catch (Flurl.Http.FlurlHttpException)
                {
                    InternetService.GoToOfflineMode();
                }
                catch (Exception e)
                {
                    await ContentDialogService.Show(new ExceptionDialog("Ошибка при добавлении трека", "Возникла ошибка при добавлении трека в Вашу библиотеку", e));
                }
            });

            GetPropertyCommand = new RelayCommand(async() =>
            {
                await ContentDialogService.Show(new PropertiesTrackContentDialog(Track));
            });

            GoToArtistCommand = new RelayCommand(() =>
            {
                StaticContent.NavigationContentService.Go(typeof(ArtistView), new ArtistParameter()
                {
                    Id   = Track.ArtistId,
                    Name = Track.Artist
                });
            });
        }