Пример #1
0
        private void buttonSearchLyrics_Click(object sender, EventArgs e)
        {
            labelSearchLyrics.Text = StringTable.SearchLyrics;
            labelSearchLyrics.Update();

            string lyrics = LyricsSearch.Search(textBoxArtistTrack.Text, textBoxTitleTrack.Text);

            if (!string.IsNullOrEmpty(lyrics))
            {
                textBoxLyricsTrack.Text = lyrics;
                labelSearchLyrics.Text  = "";
            }
            else
            {
                labelSearchLyrics.Text = StringTable.LyricsNotFound;
            }
        }
Пример #2
0
        /// <summary>
        /// Die CD-Daten asynchron laden.
        /// </summary>
        public void ReadCDInformation()
        {
            cdUserControl.IsEnabled     = false;
            GridWaitProgress.Visibility = System.Windows.Visibility.Visible;

            CD.Clear();
            //CD = new DataBaseEngine.CD();
            //cdUserControl.CD = null;

            BackgroundWorker bw = new BackgroundWorker();

            bw.DoWork += delegate
            {
                // CD-Informationen im Hintergrund einlesen, damit Hitbase nicht blockiert ist.
                CDInfo cdInfo = SoundEngine.SoundEngine.Instance.ReadCDInformation(CDEngine.DriveLetter);

                if (cdInfo != null)
                {
                    bool mp3AudioCD = false;

                    if (cdInfo.IsPureDataCD())
                    {
                        Dispatcher.Invoke((Action) delegate
                        {
                            WpfMessageBoxResult result = WPFMessageBox.Show(System.Windows.Application.Current.MainWindow,
                                                                            StringTable.PureDataCDTitle, StringTable.PureDataCD,
                                                                            "/Big3.Hitbase.SharedResources;component/Images/Info.png",
                                                                            WpfMessageBoxButtons.YesNo, "PureDataCDScanFiles", false, 300);

                            if (result == WpfMessageBoxResult.Yes)
                            {
                                ScanDataCD(CDEngine.DriveLetter.ToString() + ":\\");
                                mp3AudioCD = true;
                            }
                        });
                    }

                    if (!mp3AudioCD)
                    {
                        CopyCDInfoToCD(cdInfo);
                    }

                    if (!FindCDInDataBase())
                    {
                        ReadCDTextInformation(cdInfo);

                        if (CD.Tracks.Count > 0 && string.IsNullOrEmpty(CD.Artist) && string.IsNullOrEmpty(CD.Title) && CD.Tracks.All(x => string.IsNullOrEmpty(x.Artist)))
                        {
                            SearchCDInCDArchive();
                        }

                        if (Settings.Current.AutoDateToday && this.dataBase.Master.DateType != DateType.None)
                        {
                            CD.Date = Misc.GetDate();
                        }

                        if (Settings.Current.AutoSearchCover)
                        {
                            if (!string.IsNullOrEmpty(CD.Artist) && !string.IsNullOrEmpty(CD.Title))
                            {
                                CDCoverAmazon.GetCDCover(this.CD);
                            }
                        }

                        if (Settings.Current.AutoSearchLyrics)
                        {
                            Dispatcher.Invoke((Action) delegate
                            {
                                waitProgress.WaitText = StringTable.SearchLyrics;
                            });

                            foreach (var track in this.CD.Tracks)
                            {
                                if (!string.IsNullOrEmpty(track.Artist) && !string.IsNullOrEmpty(track.Title))
                                {
                                    string lyrics = LyricsSearch.Search(track.Artist, track.Title);
                                    if (!string.IsNullOrEmpty(lyrics))
                                    {
                                        track.Lyrics = lyrics;
                                    }
                                }
                            }
                        }
                    }
                }
            };
            bw.RunWorkerCompleted += delegate
            {
                cdUserControl.IsEnabled = true;

                GridWaitProgress.Visibility = System.Windows.Visibility.Collapsed;

                cdUserControl.CD = CD;

                // Automatisch CD kopieren?
                if (CDEngine.IsCDInDrive && Big3.Hitbase.Configuration.Settings.Current.RecordAutoCDCopy)
                {
                    int numsoundfile = 0;

                    foreach (Track track in CD.Tracks)
                    {
                        if (track.SoundFileExists)
                        {
                            numsoundfile += 1;
                        }
                    }

                    // Wenn bereits für alle Tracks ein Soudnfile vorhanden ist mache nix...
                    if (numsoundfile != CD.NumberOfTracks)
                    {
                        HitbaseCommands.StartRecord.Execute(null, this);
                    }
                }

                UpdateTabCaption();

                // Automatisch abspielen? Wenn im Explorer ein CD-Laufwerk doppelgeklickt wurde.
                if (autoPlayTrackNumber > 0)
                {
                    if (this.CD != null && this.CD.Tracks != null && this.CD.Tracks.Count >= autoPlayTrackNumber)
                    {
                        AddToPlaylist(this.CD.Tracks[autoPlayTrackNumber - 1].ID, AddTracksToPlaylistType.Now);
                    }

                    autoPlayTrackNumber = 0;
                }
            };

            bw.RunWorkerAsync();
        }
Пример #3
0
        /// <summary>
        ///   Get Lyrics for selected Rows
        /// </summary>
        private void GetLyricsThread()
        {
            log.Trace(">>>");
              //Make calls to Tracksgrid Threadsafe
              if (tracksGrid.InvokeRequired)
              {
            ThreadSafeGridDelegate d = GetLyricsThread;
            tracksGrid.Invoke(d, new object[] { });
            return;
              }

              int count = 0;
              int trackCount = tracksGrid.SelectedRows.Count;
              SetProgressBar(trackCount);

              List<TrackData> tracks = new List<TrackData>();
              foreach (DataGridViewRow row in tracksGrid.Rows)
              {
            if (!row.Selected)
            {
              continue;
            }

            count++;
            Application.DoEvents();
            _main.progressBar1.Value += 1;
            if (_progressCancelled)
            {
              ResetProgressBar();
              return;
            }
            TrackData track = Options.Songlist[row.Index];
            if (track.Lyrics == null || Options.MainSettings.OverwriteExistingLyrics)
            {
              tracks.Add(track);
            }
              }

              ResetProgressBar();

              if (tracks.Count > 0)
              {
            try
            {
              LyricsSearch lyricssearch = new LyricsSearch(tracks);
              lyricssearch.Owner = _main;
              if (_main.ShowModalDialog(lyricssearch) == DialogResult.OK)
              {
            DataGridView lyricsResult = lyricssearch.GridView;
            foreach (DataGridViewRow lyricsRow in lyricsResult.Rows)
            {
              if (lyricsRow.Cells[0].Value == DBNull.Value || lyricsRow.Cells[0].Value == null)
                continue;

              if ((bool)lyricsRow.Cells[0].Value != true)
                continue;

              foreach (DataGridViewRow row in tracksGrid.Rows)
              {
                TrackData lyricsTrack = tracks[lyricsRow.Index];
                TrackData track = Options.Songlist[row.Index];
                if (lyricsTrack.FullFileName == track.FullFileName)
                {
                  track.Lyrics = (string)lyricsRow.Cells[5].Value;
                  SetBackgroundColorChanged(row.Index);
                  track.Changed = true;
                  Options.Songlist[row.Index] = track;
                  _itemsChanged = true;
                  break;
                }
              }
            }
              }
            }
            catch (Exception ex)
            {
              log.Error("Error in Lyricssearch: {0}", ex.Message);
            }
              }

              tracksGrid.Refresh();
              tracksGrid.Parent.Refresh();
              _main.TagEditForm.FillForm();

              log.Trace("<<<");
        }