public void CommitChanges(ICollectionManager collectionManager)
        {
            if (this.Release.Artists.Join() != this.Release.JoinedAlbumArtists)
            {
                this.Release.Artists.Clear();
                this.Release.Artists.Add(new ReleaseArtist()
                {
                    Artist = collectionManager.GetOrCreateArtist(this.Release.JoinedAlbumArtists)
                });
            }

            this.Release.ReleaseDate         = ReleaseDate.Parse(this.textReleaseDate.Text);
            this.Release.OriginalReleaseDate = ReleaseDate.Parse(this.textOriginalReleaseDate.Text);

            int discogsRelease, discogsMaster;

            int.TryParse(this.textDiscogsRelease.Text, out discogsRelease);
            int.TryParse(this.textDiscogsMaster.Text, out discogsMaster);
            this.Release.DiscogsReleaseId  = discogsRelease;
            this.Release.DiscogsMasterId   = discogsMaster;
            this.Release.WikipediaPageName = this.textWikipediaPageName.Text;
        }
        public void Merge()
        {
            string discogsReleaseString = release.DiscogsReleaseId == 0 ? null : release.DiscogsReleaseId.ToString();

            DiscogsSelectReleaseWindow selectReleaseWindow = new DiscogsSelectReleaseWindow(discogsReleaseString);

            if (selectReleaseWindow.ShowDialog(this.window) == true && selectReleaseWindow.Release != null)
            {
                var discogsRelease = selectReleaseWindow.Release;

                DiscogsSelectImportOptions importOptionsWindow = new DiscogsSelectImportOptions();
                if (importOptionsWindow.ShowDialog(this.window) == true)
                {
                    if (importOptionsWindow.ImportTrackData)
                    {
                        if (!ImportTrackData(selectReleaseWindow))
                        {
                            return;
                        }
                    }
                    if (importOptionsWindow.ImportAlbumArtist)
                    {
                        ImportAlbumArtist(discogsRelease, importOptionsWindow);
                    }
                    if (importOptionsWindow.ImportImages)
                    {
                        ImportImages(discogsRelease);
                    }
                    if (importOptionsWindow.ImportReleaseDate)
                    {
                        this.release.ReleaseDate = ReleaseDate.Parse(discogsRelease.ReleaseDate);
                    }
                    if (importOptionsWindow.ImportTitle)
                    {
                        this.release.Title = discogsRelease.Title;
                    }
                    if (importOptionsWindow.ImportCatalogInformation)
                    {
                        this.release.Country = discogsRelease.Country;
                        this.release.Genre   = discogsRelease.Genres.FirstOrDefault();
                        if (discogsRelease.Labels.Length >= 1)
                        {
                            var discogsLabel = discogsRelease.Labels[0];
                            if (discogsRelease.Labels.Length > 1)
                            {
                                DiscogsSelectLabelWindow selectLabelWindow = new DiscogsSelectLabelWindow(discogsRelease);
                                selectLabelWindow.Owner = this.window;
                                if (selectLabelWindow.ShowDialog() != true)
                                {
                                    return;
                                }
                                discogsLabel = selectLabelWindow.SelectedLabel;
                            }

                            this.release.Label         = discogsLabel.Aggregate.NameFixed;
                            this.release.CatalogNumber = discogsLabel.CatalogNumber;
                        }
                    }
                    if (importOptionsWindow.ImportNotes)
                    {
                        this.release.Notes = discogsRelease.Notes;
                    }

                    this.release.DiscogsReleaseId = discogsRelease.Id;
                    this.release.DiscogsMasterId  = discogsRelease.MasterId;
                }
            }
        }
Beispiel #3
0
        protected Release ReadRelease(XmlReader reader)
        {
            reader.AssertElementStart(Keys.Release);

            Release release = new Release();

            release.JoinedAlbumArtists = reader.GetAttributeOrNull(Keys.JoinedAlbumArtists);
            release.Title               = reader.GetAttributeOrNull(Keys.Title);
            release.ReleaseDate         = ReleaseDate.Parse(reader.GetAttributeOrNull(Keys.ReleaseDate));
            release.OriginalReleaseDate = ReleaseDate.Parse(reader.GetAttributeOrNull(Keys.OriginalReleaseDate));
            release.CatalogNumber       = reader.GetAttributeOrNull(Keys.CatalogNumber);
            release.Label               = reader.GetAttributeOrNull(Keys.Label);
            release.Country             = reader.GetAttributeOrNull(Keys.Country);
            release.FlagMessage         = reader.GetAttributeOrNull(Keys.FlagMessage);
            release.IsFlagged           = release.FlagMessage != null;
            release.Notes               = reader.GetAttributeOrNull(Keys.Notes);
            release.WikipediaPageName   = reader.GetAttributeOrNull(Keys.WikipediaPageName);

            release.DiscogsReleaseId    = reader.GetAttributeInt32(Keys.DiscogsReleaseId, 0);
            release.DiscogsMasterId     = reader.GetAttributeInt32(Keys.DiscogsMasterId, 0);
            release.Genre               = reader.GetAttributeOrNull(Keys.Genre);
            release.Score               = reader.GetAttributeInt32(Keys.Score, 0);
            release.DynamicRange        = reader.GetAttributeDouble(Keys.DynamicRange, double.NaN);
            release.ReplayGainAlbumGain = reader.GetAttributeDouble(Keys.AlbumGain, double.NaN);
            release.ReplayGainAlbumPeak = reader.GetAttributeDouble(Keys.AlbumPeak, double.NaN);

            if (reader.GetAttributeOrNull(Keys.DateAdded) != null)
            {
                release.DateAdded = new DateTime(reader.GetAttributeInt64(Keys.DateAdded, 0));
            }
            if (reader.GetAttributeOrNull(Keys.DateAudioModified) != null)
            {
                release.DateAudioModified = new DateTime(reader.GetAttributeInt64(Keys.DateAudioModified, 0));
            }
            if (reader.GetAttributeOrNull(Keys.DateModified) != null)
            {
                release.DateModified = new DateTime(reader.GetAttributeInt64(Keys.DateModified, 0));
            }

            if (reader.IsEmptyElement)
            {
                throw new FormatException(InvalidXmlDatabase);
            }

            while (reader.Read())
            {
                if (reader.IsElementEnd(Keys.Release))
                {
                    break;
                }

                if (reader.IsElementStart(Keys.Artists))
                {
                    this.ReadArtists(reader, release);
                }
                else if (reader.IsElementStart(Keys.Tracks))
                {
                    this.ReadTracks(reader, release);
                }
                else if (reader.IsElementStart(Keys.Images))
                {
                    this.ReadImages(reader, release);
                }
                else if (reader.IsElementStart(Keys.AdditionalFiles))
                {
                    this.ReadAdditionalFiles(reader, release);
                }
            }

            return(release);
        }