public void ToggleReleaseFlag(Release release) { if (release.IsFlagged) { if (Dialogs.Confirm("Unflag release?")) { release.IsFlagged = false; //using (var transaction = this.CollectionManager.BeginTransaction()) //{ this.CollectionManager.Save(release); //transaction.Commit(); //} CollectionManagerGlobal.OnCollectionChanged(); } } else { FlagReleaseWindow flagWindow = new FlagReleaseWindow(); flagWindow.Owner = Window.GetWindow(this.mainCollectionView); flagWindow.FlagMessage = release.FlagMessage; if (flagWindow.ShowDialog() == true) { release.IsFlagged = true; release.FlagMessage = flagWindow.FlagMessage; //using (var transaction = this.CollectionManager.BeginTransaction()) //{ this.CollectionManager.Save(release); //transaction.Commit(); //} CollectionManagerGlobal.OnCollectionChanged(); } } }
private void OKCancelBox_OKClicked(object sender, EventArgs e) { this.CollectionManager.SaveSettings(); CollectionManagerGlobal.OnCollectionChanged(); this.DialogResult = true; }
public void Run() { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "Zip Files (*.zip)|*.zip|" + Utility.AllFilesFilter; if (openFileDialog.ShowDialog() == true) { WaitWindow waitWindow = new WaitWindow("Importing collection..."); waitWindow.ShowDialog(this.ParentWindow, () => { try { using (CollectionImporterBase importer = new ArchivedCollectionImporter(openFileDialog.FileName, this.CollectionManager)) { importer.Import(); } } catch (Exception ex) { Utility.WriteToErrorLog("Error importing: " + ex.ToString()); MessageBox.Show("Error importing backup: " + ex.Message); } this.ParentWindow.Dispatcher.BeginInvokeAction(() => { CollectionManagerGlobal.OnCollectionChanged(); }); }); } }
public void Run() { System.Windows.Forms.FolderBrowserDialog folderDialog = new System.Windows.Forms.FolderBrowserDialog(); folderDialog.ShowNewFolderButton = true; if (folderDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { WaitWindow waitWindow = new WaitWindow("Importing collection..."); waitWindow.ShowDialog(this.ParentWindow, () => { try { using (DirectoryCollectionImporter importer = new DirectoryCollectionImporter(folderDialog.SelectedPath, this.CollectionManager)) { importer.Import(); } } catch (Exception ex) { Utility.WriteToErrorLog("Error importing: " + ex.ToString()); MessageBox.Show("Error importing backup: " + ex.Message); } this.ParentWindow.Dispatcher.BeginInvokeAction(() => { CollectionManagerGlobal.OnCollectionChanged(); }); }); } }
public void Run() { this.waitWindow = new WaitWindow("Searching for cover art..."); this.waitWindow.ShowDialog(this.ParentWindow, () => { BlockingCollection <ReleaseData> releaseData = new BlockingCollection <ReleaseData>(6); Thread addingThread = new Thread(this.AddingThread); addingThread.Start(releaseData); for (int releaseNumber = 1; ; ++releaseNumber) { ReleaseData release; if (!releaseData.TryTake(out release, -1)) { break; } if (!this.ChooseReleasePicture(release, releaseNumber)) { addingThread.Abort(); break; } } addingThread.Join(); }); CollectionManagerGlobal.OnCollectionChanged(); }
private void RunInternal(params Release[] releases) { this.trackToTask = new Dictionary <Track, FileEncodeTask>(); this.tasks = new List <FileEncodeTask>(); Progress <double> progress = new Progress <double>(); new WaitWindow("Generating tasks...").ShowDialog(this.ParentWindow, new Task(() => { this.GenerateDynamicRangeTasks(releases, progress); }), progress); EncoderController encoderController = new EncoderController(this.tasks.ToArray(), this.settingsManager.Settings.ActualLocalConcurrencyLevel); EncodingWindow encodingWindow = new EncodingWindow(encoderController); if (encodingWindow.ShowDialog(this.ParentWindow) == true) { foreach (KeyValuePair <Track, FileEncodeTask> items in trackToTask) { if (items.Value.DrMeter != null) { items.Key.DynamicRange = items.Value.DrMeter.GetDynamicRange(); } } foreach (Release release in releases) { release.UpdateDynamicProperties(); this.CollectionManager.Save(release); } CollectionManagerGlobal.OnCollectionChanged(); } }
private void btnUpdateReleasesThumbnails_Click(object sender, RoutedEventArgs e) { Progress <double> progress = new Progress <double>(); new WaitWindow("Update releases properties...").ShowDialog(this, new Task(() => { this.collectionManager.Operations.UpdateReleasesThumbnails(progress); this.Dispatcher.BeginInvokeAction(() => CollectionManagerGlobal.OnCollectionChanged()); }), progress); }
private void menuBrowserViewMode_Click(object sender, RoutedEventArgs e) { MenuItem menuItem = (MenuItem)e.Source; ReleasesViewMode viewMode; Assert.IsTrue(Enum.TryParse((string)menuItem.Tag, out viewMode)); this.collectionManager.Settings.ReleasesViewMode = viewMode; this.collectionManager.SaveSettings(); CollectionManagerGlobal.OnCollectionChanged(); }
private void SaveChangesAsync(IProgress <double> progress) { try { this.CollectionManager.Operations.MoveTracks(this.release, (filename, ex) => { var result = Dialogs.YesNoCancel("Moving " + Path.GetFileName(filename) + " failed. Retry / fail / continue."); if (result == MessageBoxResult.Yes) { return(false); } else if (result == MessageBoxResult.No) { throw ex; } else if (result == MessageBoxResult.Cancel) { return(true); } return(true); }); this.CollectionManager.Operations.WriteTags(this.release, progress); release.UpdateDynamicProperties(); this.CollectionManager.Save(release); this.imagesEditor.WriteFiles(); this.Dispatcher.BeginInvoke(new Action(() => { this.completed = true; this.Close(); })); } catch (Exception ex) { Utility.WriteToErrorLog(ex.ToString()); Dialogs.Error("There was an error moving. Please try not to continue!"); } finally { this.Dispatcher.BeginInvoke(new Action(() => { this.detailsEditor.Release = null; this.detailsEditor.Release = this.release; this.RefreshAllDiscs(); CollectionManagerGlobal.OnCollectionChanged(); })); } }
private void MergerTask(object saveToFiles) { LocalCollectionMerger merger = new LocalCollectionMerger( this.CollectionManager, this.matcherResult, (bool)saveToFiles); merger.ProgressChanged += ProgressBarUpdater.CreateHandler(this.Dispatcher, this.progressMerge); merger.Merge(); this.Dispatcher.Invoke(new Action(() => { CollectionManagerGlobal.OnCollectionChanged(); EnableCloseButton(); })); }
public void DeleteRelease(Release release) { VerificationWindow verify = new VerificationWindow("This will permanently delete all files and images!"); if (verify.ShowDialog(Window.GetWindow(this.mainCollectionView)) == true) { //using (var transaction = this.CollectionManager.BeginTransaction()) //{ string releaseName = release.JoinedAlbumArtists + " - " + release.Title; if (!this.CollectionManager.DeleteRelease(release, true)) { Dialogs.Inform("Some files from " + releaseName + " were not deleted successfully. Please check by hand."); } //transaction.Commit(); //} CollectionManagerGlobal.OnCollectionChanged(); } }
private void menuBrowserShowImages_Click(object sender, RoutedEventArgs e) { this.collectionManager.Settings.ShowImagesInReleaseTree = menuBrowserShowImages.IsChecked; this.collectionManager.SaveSettings(); CollectionManagerGlobal.OnCollectionChanged(); }
private void OKCancelBox_OKClicked(object sender, EventArgs e) { this.release.DateAudioModified = DateTime.Now; IEncoderFactory encoderFactory; if (this.CollectionManager.Settings.NetworkEncoding) { encoderFactory = new RemoteFlacEncoderFactory(this.networkBox.Servers, 8, this.SettingsManager.Settings.ActualLocalConcurrencyLevel, true, true); } else { encoderFactory = new NativeFlacEncoderFactory(8, this.SettingsManager.Settings.ActualLocalConcurrencyLevel, true, true); } IEncoderFactory replayGainFactory = new DspEncoderFactory(this.SettingsManager.Settings.ActualLocalConcurrencyLevel, true, true); ReplayGainTask rgTask = new ReplayGainTask(replayGainFactory, this.release, true, true, true); List <IParallelTask> tasks = new List <IParallelTask>(); for (int i = 0; i < this.items.Count; ++i) { Track track = this.release.Tracklist[i]; IImportSourceItem importSourceItem = this.items[i]; track.RelativeFilename = FilenameGenerator.PatternToFilename( this.CollectionManager.Settings.FileNamingPattern, this.release, track) + ".flac"; AudioFileTag tag = new AudioFileTag(this.release, track); string filename = Path.Combine(this.CollectionManager.Settings.MusicDirectory, track.RelativeFilename); var task = new FileEncodeTask( encoderFactory, () => importSourceItem.GetAudioSource(), filename, tag ); tasks.Add(task); rgTask.AddItem(track, task); } tasks.Add(rgTask); int concurrency = Math.Max(encoderFactory.ThreadCount, replayGainFactory.ThreadCount); EncoderController controller = new EncoderController(tasks.ToArray(), concurrency); EncodingWindow window = new EncodingWindow(controller); if (window.ShowDialog(this) == true) { this.release.UpdateDynamicProperties(); this.CollectionManager.Save(this.release); this.Close(); } CollectionManagerGlobal.OnCollectionChanged(); }
private void OKCancelBox_OKClicked(object sender, System.EventArgs e) { this.UpdateRelease(); IEncoderFactory encoderFactory; if (this.CollectionManager.Settings.NetworkEncoding) { encoderFactory = new RemoteFlacEncoderFactory(this.networkBox.Servers, 8, this.SettingsManager.Settings.ActualLocalConcurrencyLevel, true, true); } else { encoderFactory = new NativeFlacEncoderFactory(8, this.SettingsManager.Settings.ActualLocalConcurrencyLevel, true, true); } IEncoderFactory replayGainFactory = new DspEncoderFactory(this.SettingsManager.Settings.ActualLocalConcurrencyLevel, true, true); ReplayGainTask rgTask = new ReplayGainTask(replayGainFactory, this.DatabaseRelease, true, true, true); List <IParallelTask> tasks = new List <IParallelTask>(); foreach (Track track in this.DatabaseRelease.Tracklist) { track.RelativeFilename = FilenameGenerator.PatternToFilename( this.CollectionManager.Settings.FileNamingPattern, this.DatabaseRelease, track) + ".flac"; AudioFileTag tag = new AudioFileTag(this.DatabaseRelease, track); IImportSourceItem sourceItem = this.Release.Discs[track.Disc - 1][track.Position - 1].SourceItem; string filename = Path.Combine(this.CollectionManager.Settings.MusicDirectory, track.RelativeFilename); var task = new FileEncodeTask( encoderFactory, () => sourceItem.GetAudioSource(), filename, tag ); tasks.Add(task); rgTask.AddItem(track, task); } tasks.Add(rgTask); int concurrency = Math.Max(encoderFactory.ThreadCount, replayGainFactory.ThreadCount); EncoderController controller = new EncoderController(tasks.ToArray(), concurrency); EncodingWindow window = new EncodingWindow(controller); if (window.ShowDialog(this) == true) { this.DatabaseRelease.UpdateDynamicProperties(); this.CollectionManager.Save(this.DatabaseRelease); this.InsertedReleaseId = this.DatabaseRelease.Id; this.imagesEditor.WriteFiles(); CollectionManagerGlobal.OnCollectionChanged(); this.completed = true; this.DialogResult = true; } }
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { this.shouldCancel = true; this.workerTask.Wait(); CollectionManagerGlobal.OnCollectionChanged(); }