Exemplo n.º 1
0
        private void AddImageFromDiscogsAsync(DiscogsNet.Model.Image discogsImage)
        {
            byte[] imageData;
            try
            {
                WebClient webClient = new WebClient();
                imageData = webClient.DownloadData(discogsImage.Uri);
            }
            catch
            {
                Dialogs.Error("Error downloading image.");
                return;
            }

            this.window.Dispatcher.BeginInvoke(new Action(() =>
            {
                MusicDatabase.Engine.Entities.Image image = new MusicDatabase.Engine.Entities.Image()
                {
                    Extension = discogsImage.Aggregate.Extension,
                    IsMain    = discogsImage.Type == DiscogsNet.Model.ImageType.Primary,
                    MimeType  = discogsImage.Aggregate.MimeType,
                    Type      = discogsImage.Type == DiscogsNet.Model.ImageType.Primary ? ImageType.FrontCover : ImageType.Other
                };
                if (this.imagesEditor.AddImage(image, imageData))
                {
                    this.release.Images.Add(image);
                }
            }));
        }
        public bool AddImage(Image image, byte[] bytes)
        {
            bool anyImagesMain = this.Images.Any(i => i.Image.IsMain);

            if (image.IsMain && anyImagesMain)
            {
                this.Images.Where(i => i.Image.IsMain).ForEach(i => i.IsMain = false);
            }
            else if (!image.IsMain && !anyImagesMain)
            {
                image.IsMain = true;
            }

            this.Images.Add(new ImageInfo()
            {
                Image            = image,
                Data             = bytes,
                EditorVisibility = this.IsReadOnly ? Visibility.Collapsed : Visibility.Visible,
                IsReadOnly       = this.IsReadOnly
            });

            this.listView.ScrollIntoView(this.Images.Last());

            return(true);
        }
        public void RemoveImage(Image image)
        {
            ImageInfo imageInfo = this.Images.Where(i => i.Image == image).First();

            this.Images.Remove(imageInfo);
            this.release.Images.Remove(image);
        }
        private void AddFile(string fileName, ImageType type)
        {
            byte[] data;
            try
            {
                data = File.ReadAllBytes(fileName);
            }
            catch
            {
                Dialogs.Error("Unable to read file!");
                this.comboAddItem.SelectedIndex = 0;
                return;
            }

            Image image = new Image()
            {
                Type      = type,
                Extension = Path.GetExtension(fileName),
                MimeType  = MimeHelper.GetMimeTypeForExtension(Path.GetExtension(fileName))
            };

            if (this.AddImage(image, data))
            {
                this.Release.Images.Add(image);
            }
        }
        private void btnSave_Click(object sender, EventArgs e)
        {
            ListViewItem listItem  = ((FrameworkElement)sender).ParentOfType <ListViewItem>();
            ImageInfo    imageInfo = (ImageInfo)this.listView.ItemContainerGenerator.ItemFromContainer(listItem);
            Image        image     = imageInfo.Image;

            SaveFileDialog dialog = new SaveFileDialog();

            dialog.Filter = image.Extension.Trim('.').ToUpper() + " Images (*" + image.Extension + ")|*" + image.Extension;
            if (dialog.ShowDialog() == true)
            {
                File.WriteAllBytes(dialog.FileName, imageInfo.Data);
            }
        }
        private void btnDelete_Click(object sender, EventArgs e)
        {
            if (Dialogs.Confirm())
            {
                ListViewItem listItem  = ((FrameworkElement)sender).ParentOfType <ListViewItem>();
                ImageInfo    imageInfo = (ImageInfo)this.listView.ItemContainerGenerator.ItemFromContainer(listItem);
                this.release.Images.Remove(imageInfo.Image);
                this.Images.Remove(imageInfo);

                if (this.release.Images.Count > 0 && !this.release.Images.Any(i => i.IsMain))
                {
                    Image     image         = this.release.Images[0];
                    ImageInfo mainImageInfo = this.Images.Where(i => i.Image == image).First();
                    mainImageInfo.IsMain = true;
                }
            }
        }
        private void btnStudio_Click(object sender, RoutedEventArgs e)
        {
            ImageStudioImportWindow studioWindow = new ImageStudioImportWindow();

            if (studioWindow.ShowDialog(Window.GetWindow(this)) == true)
            {
                foreach (OutputImage outputImage in studioWindow.OutputImages)
                {
                    Image image = new Image()
                    {
                        Extension = outputImage.Extension,
                        MimeType  = MimeHelper.GetMimeTypeForExtension(outputImage.Extension)
                    };

                    if (this.AddImage(image, outputImage.Bytes))
                    {
                        this.Release.Images.Add(image);
                    }
                }
            }
        }
Exemplo n.º 8
0
        public static void UpdateReleaseThumbnail(Release release, ICollectionImageHandler imageHandler)
        {
            Image mainImage = release.Images.FirstOrDefault(i => i.IsMain);

            if (mainImage != null)
            {
                byte[] thumbnail = null;
                string thumbExtension = null, thumbMimeType = null;
                thumbnail = ThumbnailGenerator.CreateThumbnail(
                    imageHandler.LoadImage(mainImage),
                    MusicDatabase.Engine.Entities.Release.ThumbnailSize,
                    out thumbExtension,
                    out thumbMimeType);
                release.Thumbnail = thumbnail;
                Assert.IsTrue(thumbMimeType == MusicDatabase.Engine.Entities.Release.ThumbnailMimeType);
            }
            else
            {
                release.Thumbnail = null;
            }
        }
 public long GetImageByteLength(Image image)
 {
     throw new NotImplementedException();
 }
 public void DeleteImage(Image image)
 {
     throw new NotImplementedException();
 }
 public void StoreImage(Image image, byte[] bytes)
 {
     throw new NotImplementedException();
 }
        private void btnStudio_Click(object sender, RoutedEventArgs e)
        {
            ImageStudioImportWindow studioWindow = new ImageStudioImportWindow();
            if (studioWindow.ShowDialog(Window.GetWindow(this)) == true)
            {
                foreach (OutputImage outputImage in studioWindow.OutputImages)
                {
                    Image image = new Image()
                    {
                        Extension = outputImage.Extension,
                        MimeType = MimeHelper.GetMimeTypeForExtension(outputImage.Extension)
                    };

                    if (this.AddImage(image, outputImage.Bytes))
                    {
                        this.Release.Images.Add(image);
                    }
                }
            }
        }
        private void AddFile(string fileName, ImageType type)
        {
            byte[] data;
            try
            {
                data = File.ReadAllBytes(fileName);
            }
            catch
            {
                Dialogs.Error("Unable to read file!");
                this.comboAddItem.SelectedIndex = 0;
                return;
            }

            Image image = new Image()
            {
                Type = type,
                Extension = Path.GetExtension(fileName),
                MimeType = MimeHelper.GetMimeTypeForExtension(Path.GetExtension(fileName))
            };
            if (this.AddImage(image, data))
            {
                this.Release.Images.Add(image);
            }
        }
 public void StoreImageFromXml(Image image, System.Xml.XmlReader reader)
 {
     throw new NotImplementedException();
 }
 public void StoreImage(Image image, byte[] bytes)
 {
     throw new NotImplementedException();
 }
 public void RemoveImage(Image image)
 {
     ImageInfo imageInfo = this.Images.Where(i => i.Image == image).First();
     this.Images.Remove(imageInfo);
     this.release.Images.Remove(image);
 }
 public byte[] LoadImage(Image image)
 {
     return this.Images.Where(i => i.Image == image).First().Data;
 }
 public byte[] LoadImage(Image image)
 {
     return(this.Images.Where(i => i.Image == image).First().Data);
 }
Exemplo n.º 19
0
        public void LoadDataFromRelease(Release release, ICollectionImageHandler imageHandler)
        {
            if (release.DiscCount != this.DatabaseRelease.DiscCount || release.Tracklist.Count != this.DatabaseRelease.Tracklist.Count)
            {
                Dialogs.Error("Tracklists do not match. Can not continue.");
                return;
            }

            this.DatabaseRelease.AdditionalFiles.Clear();
            this.DatabaseRelease.AdditionalFiles.AddRange(release.AdditionalFiles);

            this.DatabaseRelease.Artists.Clear();
            this.DatabaseRelease.Artists.AddRange(release.Artists.Select(ra => new ReleaseArtist()
            {
                Artist     = this.CollectionManager.GetOrCreateArtist(ra.Artist.Name),
                JoinString = ra.JoinString
            }));

            this.DatabaseRelease.CatalogNumber = release.CatalogNumber;
            this.DatabaseRelease.Country       = release.Country;
            //this.DatabaseRelease.DateAdded = release.DateAdded;
            //this.DatabaseRelease.DateModified = release.DateModified;
            //this.DatabaseRelease.DateAudioModified = release.DateAudioModified;
            this.DatabaseRelease.DiscogsReleaseId    = release.DiscogsReleaseId;
            this.DatabaseRelease.DiscogsMasterId     = release.DiscogsMasterId;
            this.DatabaseRelease.FlagMessage         = release.FlagMessage;
            this.DatabaseRelease.Genre               = release.Genre;
            this.DatabaseRelease.IsFlagged           = release.IsFlagged;
            this.DatabaseRelease.JoinedAlbumArtists  = release.JoinedAlbumArtists;
            this.DatabaseRelease.Label               = release.Label;
            this.DatabaseRelease.Notes               = release.Notes;
            this.DatabaseRelease.WikipediaPageName   = release.WikipediaPageName;
            this.DatabaseRelease.OriginalReleaseDate = release.OriginalReleaseDate;
            this.DatabaseRelease.ReleaseDate         = release.ReleaseDate;
            this.DatabaseRelease.Title               = release.Title;

            this.additionalFilesEditor.Release = null;
            this.additionalFilesEditor.Release = this.DatabaseRelease;

            this.DatabaseRelease.Images.Clear();
            this.imagesEditor.Release = null;
            this.imagesEditor.Release = this.DatabaseRelease;
            foreach (var image in release.Images)
            {
                var newImage = new MusicDatabase.Engine.Entities.Image()
                {
                    Description = image.Description,
                    Extension   = image.Extension,
                    IsMain      = image.IsMain,
                    MimeType    = image.MimeType,
                    Type        = image.Type
                };
                this.DatabaseRelease.Images.Add(newImage);
                this.imagesEditor.AddImage(newImage, imageHandler.LoadImage(image));
            }

            for (int i = 0; i < release.Tracklist.Count; ++i)
            {
                this.DatabaseRelease.Tracklist[i].Artists.Clear();
                this.DatabaseRelease.Tracklist[i].Artists.AddRange(release.Tracklist[i].Artists.Select(a => new TrackArtist()
                {
                    Artist     = this.CollectionManager.GetOrCreateArtist(a.Artist.Name),
                    JoinString = a.JoinString
                }));
                this.DatabaseRelease.Tracklist[i].JoinedArtists = release.Tracklist[i].JoinedArtists;
                this.DatabaseRelease.Tracklist[i].Title         = release.Tracklist[i].Title;
            }

            this.detailsEditor.Release = null;
            this.detailsEditor.Release = this.DatabaseRelease;
            this.RefreshAllDiscs();
        }
 public void StoreImageFromXml(Image image, System.Xml.XmlReader reader)
 {
     throw new NotImplementedException();
 }
        public bool AddImage(Image image, byte[] bytes)
        {
            bool anyImagesMain = this.Images.Any(i => i.Image.IsMain);
            if (image.IsMain && anyImagesMain)
            {
                this.Images.Where(i => i.Image.IsMain).ForEach(i => i.IsMain = false);
            }
            else if (!image.IsMain && !anyImagesMain)
            {
                image.IsMain = true;
            }

            this.Images.Add(new ImageInfo()
            {
                Image = image,
                Data = bytes,
                EditorVisibility = this.IsReadOnly ? Visibility.Collapsed : Visibility.Visible,
                IsReadOnly = this.IsReadOnly
            });

            this.listView.ScrollIntoView(this.Images.Last());

            return true;
        }
 public long GetImageByteLength(Image image)
 {
     throw new NotImplementedException();
 }
 public void DeleteImage(Image image)
 {
     throw new NotImplementedException();
 }
        private void AddImageFromDiscogsAsync(DiscogsNet.Model.Image discogsImage)
        {
            byte[] imageData;
            try
            {
                WebClient webClient = new WebClient();
                imageData = webClient.DownloadData(discogsImage.Uri);
            }
            catch
            {
                Dialogs.Error("Error downloading image.");
                return;
            }

            this.window.Dispatcher.BeginInvoke(new Action(() =>
            {
                MusicDatabase.Engine.Entities.Image image = new MusicDatabase.Engine.Entities.Image()
                {
                    Extension = discogsImage.Aggregate.Extension,
                    IsMain = discogsImage.Type == DiscogsNet.Model.ImageType.Primary,
                    MimeType = discogsImage.Aggregate.MimeType,
                    Type = discogsImage.Type == DiscogsNet.Model.ImageType.Primary ? ImageType.FrontCover : ImageType.Other
                };
                if (this.imagesEditor.AddImage(image, imageData))
                {
                    this.release.Images.Add(image);
                }
            }));
        }
        public void LoadDataFromRelease(Release release, ICollectionImageHandler imageHandler)
        {
            if (release.DiscCount != this.DatabaseRelease.DiscCount || release.Tracklist.Count != this.DatabaseRelease.Tracklist.Count)
            {
                Dialogs.Error("Tracklists do not match. Can not continue.");
                return;
            }

            this.DatabaseRelease.AdditionalFiles.Clear();
            this.DatabaseRelease.AdditionalFiles.AddRange(release.AdditionalFiles);

            this.DatabaseRelease.Artists.Clear();
            this.DatabaseRelease.Artists.AddRange(release.Artists.Select(ra => new ReleaseArtist()
            {
                Artist = this.CollectionManager.GetOrCreateArtist(ra.Artist.Name),
                JoinString = ra.JoinString
            }));

            this.DatabaseRelease.CatalogNumber = release.CatalogNumber;
            this.DatabaseRelease.Country = release.Country;
            //this.DatabaseRelease.DateAdded = release.DateAdded;
            //this.DatabaseRelease.DateModified = release.DateModified;
            //this.DatabaseRelease.DateAudioModified = release.DateAudioModified;
            this.DatabaseRelease.DiscogsReleaseId = release.DiscogsReleaseId;
            this.DatabaseRelease.DiscogsMasterId = release.DiscogsMasterId;
            this.DatabaseRelease.FlagMessage = release.FlagMessage;
            this.DatabaseRelease.Genre = release.Genre;
            this.DatabaseRelease.IsFlagged = release.IsFlagged;
            this.DatabaseRelease.JoinedAlbumArtists = release.JoinedAlbumArtists;
            this.DatabaseRelease.Label = release.Label;
            this.DatabaseRelease.Notes = release.Notes;
            this.DatabaseRelease.WikipediaPageName = release.WikipediaPageName;
            this.DatabaseRelease.OriginalReleaseDate = release.OriginalReleaseDate;
            this.DatabaseRelease.ReleaseDate = release.ReleaseDate;
            this.DatabaseRelease.Title = release.Title;

            this.additionalFilesEditor.Release = null;
            this.additionalFilesEditor.Release = this.DatabaseRelease;

            this.DatabaseRelease.Images.Clear();
            this.imagesEditor.Release = null;
            this.imagesEditor.Release = this.DatabaseRelease;
            foreach (var image in release.Images)
            {
                var newImage = new MusicDatabase.Engine.Entities.Image()
                {
                    Description = image.Description,
                    Extension = image.Extension,
                    IsMain = image.IsMain,
                    MimeType = image.MimeType,
                    Type = image.Type
                };
                this.DatabaseRelease.Images.Add(newImage);
                this.imagesEditor.AddImage(newImage, imageHandler.LoadImage(image));
            }

            for (int i = 0; i < release.Tracklist.Count; ++i)
            {
                this.DatabaseRelease.Tracklist[i].Artists.Clear();
                this.DatabaseRelease.Tracklist[i].Artists.AddRange(release.Tracklist[i].Artists.Select(a => new TrackArtist()
                {
                    Artist = this.CollectionManager.GetOrCreateArtist(a.Artist.Name),
                    JoinString = a.JoinString
                }));
                this.DatabaseRelease.Tracklist[i].JoinedArtists = release.Tracklist[i].JoinedArtists;
                this.DatabaseRelease.Tracklist[i].Title = release.Tracklist[i].Title;
            }

            this.detailsEditor.Release = null;
            this.detailsEditor.Release = this.DatabaseRelease;
            this.RefreshAllDiscs();
        }