public static string GetFilterForType(ReleaseAdditionalFileType type)
 {
     switch (type)
     {
         case ReleaseAdditionalFileType.Cue:
             return "Cue Files (*.cue)|*.cue|" + Utility.AllFilesFilter;
         case ReleaseAdditionalFileType.Other:
             return Utility.AllFilesFilter;
         case ReleaseAdditionalFileType.RipLog:
             return "Log Files (*.log)|*.log|" + Utility.AllFilesFilter;
         case ReleaseAdditionalFileType.Torrent:
             return "Torrent Files (*.torrent)|*.torrent|" + Utility.AllFilesFilter;
         default:
             throw new NotSupportedException();
     }
 }
        private void UserControl_Drop(object sender, DragEventArgs e)
        {
            if (!e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                return;
            }
            string[] droppedItems = (string[])e.Data.GetData(DataFormats.FileDrop);
            Array.Sort(droppedItems);
            foreach (string file in droppedItems)
            {
                if (!File.Exists(file))
                {
                    break;
                }

                ReleaseAdditionalFileType type = ReleaseAdditionalFile.GetTypeForExtension(Path.GetExtension(file));
                this.AddFile(file, type);
            }
        }
        public static string GetFilterForType(ReleaseAdditionalFileType type)
        {
            switch (type)
            {
            case ReleaseAdditionalFileType.Cue:
                return("Cue Files (*.cue)|*.cue|" + Utility.AllFilesFilter);

            case ReleaseAdditionalFileType.Other:
                return(Utility.AllFilesFilter);

            case ReleaseAdditionalFileType.RipLog:
                return("Log Files (*.log)|*.log|" + Utility.AllFilesFilter);

            case ReleaseAdditionalFileType.Torrent:
                return("Torrent Files (*.torrent)|*.torrent|" + Utility.AllFilesFilter);

            default:
                throw new NotSupportedException();
            }
        }
        private void comboAddItem_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (this.comboAddItem.SelectedItem is ReleaseAdditionalFileType)
            {
                ReleaseAdditionalFileType type = (ReleaseAdditionalFileType)this.comboAddItem.SelectedItem;

                OpenFileDialog dialog = new OpenFileDialog();
                dialog.Multiselect = true;
                dialog.Filter      = ReleaseAdditionalFile.GetFilterForType(type);
                if (dialog.ShowDialog() == true)
                {
                    foreach (string file in dialog.FileNames)
                    {
                        this.AddFile(file, type);
                    }
                }

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

            ReleaseAdditionalFile file = new ReleaseAdditionalFile()
            {
                Type = type,
                File = data,
                OriginalFilename = fileName
            };
            this.Release.AdditionalFiles.Add(file);
            this.AddItem(file);
        }
        private void AddFile(string fileName, ReleaseAdditionalFileType type)
        {
            byte[] data;
            try
            {
                data = File.ReadAllBytes(fileName);
            }
            catch
            {
                Dialogs.Error("Unable to read file!");
                this.comboAddItem.SelectedIndex = 0;
                return;
            }

            ReleaseAdditionalFile file = new ReleaseAdditionalFile()
            {
                Type             = type,
                File             = data,
                OriginalFilename = fileName
            };

            this.Release.AdditionalFiles.Add(file);
            this.AddItem(file);
        }