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;
        }
Example #3
0
        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();
                    });
                });
            }
        }
Example #4
0
        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();
        }
Example #6
0
        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();
            }
        }
Example #7
0
        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);
        }
Example #8
0
        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();
                }));
            }
        }
Example #10
0
        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();
            }
        }
Example #12
0
 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();
 }