private void UpdateSoundfiles(int oldId, string oldGenre, string newGenre, bool delete) { WaitProgressWindow waitProgress = new WaitProgressWindow(); waitProgress.Show(); waitProgress.progressControl.textBlockStatus.Text = StringTable.UpdatingGenres; BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += delegate { DataTable dt = dataBase.ExecuteFreeSql("SELECT Soundfile from Track WHERE CategoryID = " + oldId); waitProgress.Dispatcher.Invoke((Action)(() => { waitProgress.progressControl.progressBar.Maximum = dt.Rows.Count; })); foreach (DataRow row in dt.Rows) { if (waitProgress.Canceled) { break; } string filename = row[0] as string; if (!string.IsNullOrEmpty(filename) && File.Exists(filename)) { SoundFileInformation sfi = SoundFileInformation.GetSoundFileInformation(filename); if (string.Compare(sfi.Genre, oldGenre, true) == 0) { sfi.Genre = newGenre; SoundFileInformation.WriteMP3Tags(sfi, Field.TrackCategory); } } waitProgress.Dispatcher.Invoke((Action)(() => { waitProgress.progressControl.progressBar.Value++; })); } }; bw.RunWorkerCompleted += delegate { waitProgress.Close(); if (!waitProgress.Canceled) { if (delete) { dataBase.DeleteCategory(oldGenre, newGenre); } FillList(); SetOrderByList(); } }; bw.RunWorkerAsync(); }
public static void UpdateSoundfiles(DataBase dataBase, int oldId, string oldPersonGroup, string newPersongroup, UpdateSoundfilesCompletedDelegate updateCompleted) { WaitProgressWindow waitProgress = new WaitProgressWindow(); waitProgress.Show(); waitProgress.progressControl.textBlockStatus.Text = StringTable.UpdatingPersonGroups; BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += delegate { DataTable dt = dataBase.ExecuteFreeSql("SELECT Soundfile from Track inner join cd on track.cdid = cd.cdid WHERE track.artistID = " + oldId + " or track.composerId = " + oldId + " or cd.artistid = " + oldId + " or cd.composerid = " + oldId); waitProgress.Dispatcher.Invoke((Action)(() => { waitProgress.progressControl.progressBar.Maximum = dt.Rows.Count; })); foreach (DataRow row in dt.Rows) { if (waitProgress.Canceled) { break; } string filename = row[0] as string; if (!string.IsNullOrEmpty(filename) && File.Exists(filename)) { SoundFileInformation sfi = SoundFileInformation.GetSoundFileInformation(filename); if (string.Compare(sfi.Artist, oldPersonGroup, true) == 0) { sfi.Artist = newPersongroup; SoundFileInformation.WriteMP3Tags(sfi, Field.ArtistTrackName); } if (string.Compare(sfi.Composer, oldPersonGroup, true) == 0) { sfi.Composer = newPersongroup; SoundFileInformation.WriteMP3Tags(sfi, Field.ComposerTrackName); } if (string.Compare(sfi.AlbumArtist, oldPersonGroup, true) == 0) { sfi.AlbumArtist = newPersongroup; SoundFileInformation.WriteMP3Tags(sfi, Field.ArtistCDName); } } waitProgress.Dispatcher.Invoke((Action)(() => { waitProgress.progressControl.progressBar.Value++; })); } }; bw.RunWorkerCompleted += delegate { waitProgress.Close(); if (!waitProgress.Canceled) { if (updateCompleted != null) { updateCompleted(); } } }; bw.RunWorkerAsync(); }