private HomeLocalViewModel() { var musicCollection = new LoadingCollection <AudioFile>(); musicCollection.OnMoreItemsRequested = GetMoreAudio; MusicCollection = musicCollection; RefreshCommand = new RelayCommand(async() => { await MusicFilesService.GetMusicLocal(true); }); }
protected async override void OnNavigatedTo(NavigationEventArgs ee) { if (HomeViewModel.Playlists.Count == 0) { await PlaylistsService.SetPlaylistLocal(); } if (HomeViewModel.Music.Count == 0) { await MusicFilesService.GetMusicLocal(); HomeViewModel.CountMusic(); } HomeViewModel.OnNavigate(); }
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)); } }
private async void Page_Loaded(object sender, RoutedEventArgs e) { goPro.Visibility = StaticContent.IsPro ? Visibility.Collapsed : Visibility.Visible; if (!StaticContent.OpenFiles) { Models.LastPlay lastPlayMusic = null; Models.AudioFile track = null; try { lastPlayMusic = await MusicFilesService.GetLastPlayAudio(); track = lastPlayMusic.Track; }catch { } if (track != null) { try { if (track.IsLocal) { try { track.Source = await StorageFile.GetFileFromPathAsync(track.SourceString); track.Duration = TimeSpan.FromSeconds(track.DurationSeconds); } catch (Exception) { track.Source = await StorageFile.GetFileFromApplicationUriAsync(new Uri(track.SourceString)); track.Duration = TimeSpan.FromSeconds(track.DurationSeconds); } if (lastPlayMusic.Playlist != null) { var playlist = lastPlayMusic.Playlist.ToAudioPlaylist(); playlist.CurrentItem = track; StaticContent.AudioService.SetCurrentPlaylist(playlist); } else { StaticContent.AudioService.CurrentPlaylist.CurrentItem = track; } } else { track.Duration = TimeSpan.FromSeconds(track.DurationSeconds); if (lastPlayMusic.Playlist != null) { var playlist = lastPlayMusic.Playlist.ToAudioPlaylist(); playlist.CurrentItem = track; StaticContent.AudioService.SetCurrentPlaylist(playlist); } else { StaticContent.AudioService.CurrentPlaylist.CurrentItem = track; } } }catch (Exception ee) { await ContentDialogService.Show(new ExceptionDialog("Ошибка при инициализации страницы плеера", "Возможно, трек, который последний раз играл - был удален или поврежден или к нему нет доступа.", ee)); } StaticContent.Volume = lastPlayMusic.Volume; if (StaticContent.AudioService.IsPlaying) { StaticContent.AudioService.Pause(); } } } }
private async void Button_Click(object sender, RoutedEventArgs e) { ProgressRing.IsActive = true; Start.Text = "Music X выполняет первичную настройку. Пожалуйста, подождите..."; ButtonStart.Visibility = Visibility.Collapsed; //создание папки с плейлистами. var localpath = ApplicationData.Current.LocalFolder; if (await localpath.TryGetItemAsync("Playlists") == null) { var pathPlaylists = await localpath.CreateFolderAsync("Playlists"); StaticContent.PlaylistsFolder = pathPlaylists; var filePlaylistId1 = await pathPlaylists.CreateFileAsync("Id1.json"); var filePlaylistId2 = await pathPlaylists.CreateFileAsync("Id2.json"); var playlistLastPlay = new Models.PlaylistFile() { Artist = "Music X", Cover = "ms-appx:///Assets/Images/latest.png", Id = 1, Name = "Слушали недавно", IsLocal = true, TracksFiles = new List <AudioFile>() }; var playlistFavorite = new Models.PlaylistFile() { Artist = "Music X", Cover = "ms-appx:///Assets/Images/favorites.png", Id = 2, Name = "Избранное", IsLocal = true, TracksFiles = new List <AudioFile>() }; var jsonPlaylistId1 = JsonConvert.SerializeObject(playlistLastPlay); var jsonPlaylistId2 = JsonConvert.SerializeObject(playlistFavorite); await FileIO.WriteTextAsync(filePlaylistId1, jsonPlaylistId1); await FileIO.WriteTextAsync(filePlaylistId2, jsonPlaylistId2); } if (await localpath.TryGetItemAsync("Covers") == null) { StaticContent.CoversFolder = await localpath.CreateFolderAsync("Covers"); } if (await localpath.TryGetItemAsync("MusicCollection.json") == null) { var musicFile = await localpath.CreateFileAsync("MusicCollection.json"); var musicString = JsonConvert.SerializeObject(new MusicCollection() { Music = new List <AudioFile>(), DateLastUpdate = "none" }); await FileIO.WriteTextAsync(musicFile, musicString); } if (await localpath.TryGetItemAsync("LastPlay.json") == null) { var lastFile = await localpath.CreateFileAsync("LastPlay.json"); var audio = new AudioFile() { Artist = "", Cover = "ms-appx:///Assets/Images/placeholder.png", DurationMinutes = "00:00", DurationSeconds = 0, Id = -2, InternalId = -2, OwnerId = -2, PlaylistId = 1, SourceString = "ms-appx:///Assets/Audio/song.mp3", Source = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/Audio/song.mp3")), Title = "Сейчас ничего не воспроизводится" }; var lastplayModel = new LastPlay() { Playlist = null, Track = audio, Volume = 1.0f, }; var jsonLastFile = JsonConvert.SerializeObject(lastplayModel); await FileIO.WriteTextAsync(lastFile, jsonLastFile); } if (await localpath.TryGetItemAsync("ConfigApp.json") == null) { var configFile = await localpath.CreateFileAsync("ConfigApp.json"); var config = new ConfigApp() { FindInDocumentsLibrary = false, FindInMusicLibrary = true, ThemeApp = 0, StreamMusic = true }; var configString = JsonConvert.SerializeObject(config); await FileIO.WriteTextAsync(configFile, configString); StaticContent.Config = config; } var settings = ApplicationData.Current.LocalSettings; settings.Values["themeApp"] = 0; await LikedArtistsService.CreateLikedArtstsFile(); await MusicFilesService.GetMusicLocal(true); var rootFrame = (Frame)Window.Current.Content; rootFrame.Navigate(typeof(Views.MainFrameView), null); }
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 }); }); }