public void AddSong(XElement songs, SongEntry entry) { XElement element = (from e in songs.Elements("Song") where e.AttributeOrDefault("UniqueId") == entry.UniqueId select e).FirstOrDefault(); if (element == null) { songs.Add(element = new XElement("Song")); } element.SetAttributeValueAndRemoveEmpty("UniqueId", entry.UniqueId); element.SetAttributeValueAndRemoveEmpty("Title", entry.Title); element.SetAttributeValueAndRemoveEmpty("Subtitle", entry.Subtitle); element.SetAttributeValueAndRemoveEmpty("BackgroundImage", entry.BackgroundImage); element.SetAttributeValueAndRemoveEmpty("Composer", entry.Composer); element.SetAttributeValueAndRemoveEmpty("Arranger", entry.Arranger); element.SetAttributeValueAndRemoveEmpty("Copyright", entry.Copyright); element.SetAttributeValueAndRemoveEmpty("License", entry.License); element.SetAttributeValueAndRemoveEmpty("MadeFamousBy", entry.MadeFamousBy); element.SetAttributeValueAndRemoveEmpty("Rating", entry.Rating); element.SetAttributeValueAndRemoveEmpty("Difficulty", entry.Difficulty); element.SetAttributeValueAndRemoveEmpty("FingerHints", entry.FingerHints); element.SetAttributeValueAndRemoveEmpty("HandParts", entry.HandParts); element.SetAttributeValueAndRemoveEmpty("Parts", entry.Parts); element.SetAttributeValueAndRemoveEmpty("Tags", string.Join(";", entry.Tags.ToArray())); element.SetAttributeValueAndRemoveEmpty("Bookmarks", string.Join(";", from b in entry.Bookmarks select(string.IsNullOrWhiteSpace(b.Value) ? b.Key.ToString() : string.Join(",", b.Key.ToString(), b.Value)))); }
public void AddSong(SongEntry entry) { XElement songs = m_document.Root.Element("Songs"); if (songs == null) { m_document.Root.Add(songs = new XElement("Songs")); } AddSong(songs, entry); }
private void RemoveButton_Click(object sender, EventArgs e) { SongEntry song = GroupList.SelectedNode.Tag as SongEntry; Metadata.RemoveSongFromGroup(PathToSelectedGroup(), song.UniqueId); SongList.Items.Add(song); GroupList.SelectedNode.Remove(); MadeChanges = true; }
private TreeNode AddTreeViewSong(TreeNode parent, SongEntry song) { if (parent == null) { throw new InvalidOperationException("Songs can only be added to existing groups."); } TreeNode node = parent.Nodes.Add(song.UniqueId, song.ToString(), 1, 1); node.Tag = song; GroupList.SelectedNode = node; MadeChanges = true; return(node); }
private void PopulateGroup(TreeNode parent, GroupEntry group, List <SongEntry> remainingSongs) { TreeNodeCollection nodes = parent == null ? GroupList.Nodes : parent.Nodes; TreeNode groupNode = nodes.Add(group.Name); groupNode.ForeColor = Color.RoyalBlue; foreach (var g in group.Groups) { PopulateGroup(groupNode, g, remainingSongs); } foreach (var s in group.Songs) { TreeNode node = groupNode.Nodes.Add(s.UniqueId, (from r in remainingSongs where r.UniqueId == s.UniqueId select r.ToString()).FirstOrDefault() ?? "Unknown Song", 1, 1); SongEntry matching = remainingSongs.Find(song => song.UniqueId == s.UniqueId) ?? s; node.Tag = matching; remainingSongs.RemoveAll(song => song.UniqueId == s.UniqueId); } }