private void Unsubscribe(ISourcePlaylist playlist) { if (playlist != null) { playlist.FileMediaSourcesChanged -= Playlist_FileMediaSourcesChanged; } }
private object MicOk_Convert(object sender, MultiplesInputsConvert3EventArgs args) { if (args.Input1 == null) { return(false); } ISourcePlaylist selectedPlaylist = (ISourcePlaylist)args.Input0; bool isNewPlaylist = (bool)args.Input1; string newPlaylistName = (string)args.Input2; return(isNewPlaylist ? !string.IsNullOrWhiteSpace(newPlaylistName) : selectedPlaylist != null); }
public static async Task UpdatePlaylists(IAudioService service) { IEnumerable <StorageFolder> folders = await GetAllFolders(KnownFolders.MusicLibrary); int nextIndex = 0; foreach (StorageFolder folder in folders) { string[] paths; if (string.IsNullOrWhiteSpace(folder.Path)) { IReadOnlyList <StorageFile> files = (await folder.GetFilesAsync()).ToArray(); paths = files.Select(f => f.Path).Select(Path.GetDirectoryName).Distinct().ToArray(); } else { paths = new string[] { folder.Path } }; if (paths.Length == 0) { continue; } int currentIndex; if (service.SourcePlaylists.TryIndexOf(p => HasSameSource(p, paths), out currentIndex)) { nextIndex = currentIndex + 1; continue; } ISourcePlaylist playlist = (ISourcePlaylist)service.CreateSourcePlaylist(); playlist.Name = folder.DisplayName; playlist.FileMediaSources = paths; await Task.Run(playlist.Update); if (playlist.Songs.Length == 0) { continue; } int index = Math.Max(service.SourcePlaylists.Count, nextIndex++); service.SourcePlaylists.Insert(index, playlist); if (service.CurrentPlaylist == null) { service.CurrentPlaylist = playlist; } } }
private void BtnOk_Click(object sender, RoutedEventArgs e) { string[] sources = tbxSources.Text?.Replace("\r\n", "\n").Split('\n').Where(l => l.Length > 0).ToArray(); if ((bool)micNewPlaylist.Output) { newPlaylist.FileMediaSources = sources; newPlaylist.Update(); service.SourcePlaylists.Add(newPlaylist); service.CurrentPlaylist = newPlaylist; } else { ISourcePlaylist selectedPlaylist = (ISourcePlaylist)lbxPlaylists.SelectedItem; selectedPlaylist.FileMediaSources = rbnAppend.IsChecked == true? selectedPlaylist.FileMediaSources.ToNotNull().Concat(sources).ToArray() : sources; } Close(); }
public AddSourcePlaylistWindow(string[] sources, IAudioService service) { InitializeComponent(); this.service = service; newPlaylist = (ISourcePlaylist)service.CreateSourcePlaylist(); newPlaylist.Loop = LoopType.CurrentPlaylist; try { newPlaylist.Name = sources.Length == 1 ? Path.GetFileNameWithoutExtension(sources[0]) : Path.GetFileName(Path.GetDirectoryName(sources[0])); } catch { } DataContext = service; gidNewPlaylist.DataContext = newPlaylist; tbxSources.Text = sources.Join(); }
private static bool HasSameSource(ISourcePlaylist playlist, string[] paths) { return(playlist.FileMediaSources.BothNullOrSequenceEqual(paths)); }