Beispiel #1
0
        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))));
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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;
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
            }
        }