示例#1
0
        private XmlDisc GetDiscFromFolder(string dirPath)
        {
            List <XmlTrack> tracks = new List <XmlTrack>();

            foreach (string ext in Program.Config.SupportedFileTypes)
            {
                Directory.GetFiles(dirPath, string.Format("*.{0}", ext),
                                   SearchOption.TopDirectoryOnly).ToList().ForEach(delegate(string fp)
                {
                    tracks.Add(new XmlTrack(fp));
                });
            }

            string  dirName    = Path.GetFileName(dirPath);
            Regex   r          = new Regex(@"\d+");
            Match   discNumber = r.Match(dirName);
            XmlDisc tempDisc   = new XmlDisc(tracks);

            if (discNumber.Success)
            {
                tempDisc.DiscNumber = uint.Parse(discNumber.Value);
            }

            Discs.Add(tempDisc);
            Tracks.AddRange(tempDisc.Tracks.ToArray());

            if (tempDisc.DiscNumber > 0)
            {
                tracks.ToList().ForEach(x => x.DiscNumber = tempDisc.DiscNumber);
            }

            tracks.ToList().ForEach(x => x.AlbumArtist = tempDisc.AlbumArtist);

            return(tempDisc);
        }
示例#2
0
        private void AddFilesWizard_Load(object sender, EventArgs e)
        {
            foreach (string pfd in FilesDirs.ToArray <string>())
            {
                if (Directory.Exists(pfd))
                {
                    AddDirToNode(pfd, tvBands.Nodes);
                }
                else if (File.Exists(pfd))
                {
                    XmlTrack track = new XmlTrack(pfd);
                    Tracks.Add(track);
                    TracksOrphaned.Add(track);
                }
            }

            XmlDisc discOrphaned = new XmlDisc(TracksOrphaned);

            foreach (XmlTrack track in TracksOrphaned)
            {
                TreeNode tnOrphaned = new TreeNode("Orphaned Tracks");
                tnOrphaned.Tag = discOrphaned;
                tvBands.Nodes.Add(tnOrphaned);
            }

            if (tvBands.Nodes.Count > 0 && tvBands.Nodes[0].Nodes.Count > 0)
            {
                tvBands.SelectedNode = tvBands.Nodes[0].Nodes[0];
            }
            else if (tvBands.Nodes.Count > 0)
            {
                tvBands.SelectedNode = tvBands.Nodes[0];
            }
        }
示例#3
0
 private void tsmiShowInExplorer_Click(object sender, EventArgs e)
 {
     if (lbDiscs.SelectedIndex > -1)
     {
         XmlDisc disc = lbDiscs.SelectedItem as XmlDisc;
         Helpers.OpenFolder(disc.Location);
     }
 }
示例#4
0
 private void tsmiSearchInGoogle_Click(object sender, EventArgs e)
 {
     if (lbDiscs.SelectedIndex > -1)
     {
         XmlDisc disc = lbDiscs.SelectedItem as XmlDisc;
         URLHelpers.OpenURL(disc.GoogleSearchURL);
     }
 }
示例#5
0
 private void lbDiscs_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (lbDiscs.SelectedIndex > -1)
     {
         XmlDisc tempDisc = lbDiscs.SelectedItem as XmlDisc;
         ttApp.SetToolTip(lbDiscs, tempDisc.ToTracklistString());
     }
 }
示例#6
0
 private void tsmiSearchInGoogle_Click(object sender, EventArgs e)
 {
     if (lbDiscs.SelectedIndex > -1)
     {
         XmlDisc disc = lbDiscs.SelectedItem as XmlDisc;
         Helpers.LoadBrowserAsync(disc.GoogleSearchURL);
     }
 }
示例#7
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            if (lbTracks.Items.Count > 0)
            {
                if (!string.IsNullOrEmpty(cboAlbumArtist.Text))
                {
                    lbTracks.Items.Cast <XmlTrack>().ToList().ForEach(x => x.AlbumArtist = cboAlbumArtist.Text);
                }

                if (!string.IsNullOrEmpty(txtAlbum.Text))
                {
                    lbTracks.Items.Cast <XmlTrack>().ToList().ForEach(x => x.Album = txtAlbum.Text);
                }

                if (!string.IsNullOrEmpty(cboGenre.Text))
                {
                    lbTracks.Items.Cast <XmlTrack>().ToList().ForEach(x => x.Genre = cboGenre.Text);
                }

                if (nudYear.Value > 0)
                {
                    lbTracks.Items.Cast <XmlTrack>().ToList().ForEach(x => x.Year = (uint)nudYear.Value);
                }

                if (nudDiscNumber.Value > 0)
                {
                    lbTracks.Items.Cast <XmlTrack>().ToList().ForEach(x => x.DiscNumber = (uint)nudDiscNumber.Value);
                }

                if (nudDiscCount.Value > 0)
                {
                    lbTracks.Items.Cast <XmlTrack>().ToList().ForEach(x => x.DiscCount = (uint)nudDiscCount.Value);
                }

                if (tvBands.SelectedNode.Tag is XmlDisc)
                {
                    XmlDisc disc = tvBands.SelectedNode.Tag as XmlDisc;
                    disc.DiscNumber = (uint)nudDiscNumber.Value;
                    disc.DiscCount  = (uint)nudDiscCount.Value;
                    disc.Year       = (uint)nudYear.Value;
                }
            }
        }
示例#8
0
        private void tvBands_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            TreeNode tn = e.Node;

            if (tn != null && tn.Tag != null)
            {
                XmlDisc disc = tn.Tag as XmlDisc;
                lbTracks.Items.Clear();
                lbTracks.Items.AddRange(disc.Tracks.ToArray());

                cboAlbumArtist.Text = disc.AlbumArtist;
                txtAlbum.Text       = disc.Album;
                cboGenre.Text       = disc.Genre;
                nudYear.Value       = disc.Year;

                nudDiscNumber.Value = disc.DiscNumber;
                nudDiscCount.Value  = disc.DiscCount;
            }
        }
示例#9
0
        private XmlDisc GetDiscFromFolder(string dirPath)
        {
            List <XmlTrack> tracks = new List <XmlTrack>();

            foreach (string ext in Program.Config.SupportedFileTypes)
            {
                Directory.GetFiles(dirPath, string.Format("*.{0}", ext),
                                   SearchOption.TopDirectoryOnly).ToList().ForEach(delegate(string fp)
                {
                    tracks.Add(new XmlTrack(fp));
                });
            }

            XmlDisc tempDisc = new XmlDisc(tracks);

            Discs.Add(tempDisc);
            this.Tracks.AddRange(tempDisc.Tracks.ToArray());
            return(tempDisc);
        }
示例#10
0
        private void RunTasks()
        {
            Program.TreadUI = SynchronizationContext.Current;

            UserConfig userConfig = SaveUserConfig();

            if (UserConfig.IsConfigured(userConfig))
            {
                XmlLibrary selectedLibrary = new XmlLibrary(Program.Config);

                if (lbDiscs.SelectedItem != null)
                {
                    if (lbDiscs.SelectedItem is XmlDisc)
                    {
                        XmlDisc disc = lbDiscs.SelectedItem as XmlDisc;
                        selectedLibrary.AddTracks(disc.Tracks);
                    }
                }
                else if (tvLibrary.SelectedNode != null)
                {
                    if (tvLibrary.SelectedNode.Tag is XmlAlbumArtist)
                    {
                        XmlAlbumArtist band = tvLibrary.SelectedNode.Tag as XmlAlbumArtist;
                        selectedLibrary.AddTracks(band.GetTracks());
                    }
                    else if (tvLibrary.SelectedNode.Tag is XmlAlbum)
                    {
                        XmlAlbum album = tvLibrary.SelectedNode.Tag as XmlAlbum;
                        selectedLibrary.AddTracks(album.GetTracks());
                    }
                }
                else
                {
                    selectedLibrary = Program.Library; // if nothing is selected then validate entire library
                }

                Program.LogViewer.BindWorker(selectedLibrary.Worker);
                selectedLibrary.RunTasks();
            }
        }