Пример #1
0
        /// <summary>
        /// Gets the file type the extension is to be added to
        /// </summary>
        /// <param name="fileTypes">Current set of file types</param>
        /// <param name="extension">Extensino to check</param>
        /// <param name="associatedType">Type the extension should be associated with</param>
        /// <returns>File type the extension is to be added to</returns>
        public static FileType GetFileTypeForExtension(FileType[] fileTypes, String extension, MediaItemTypeEnum associatedType)
        {
            if (GeneralMethods.MessageBox("There is currently no file type associated with " + associatedType.ToString().ToLower() + "s containing the extension \"" + extension + "\". Would you like to add one?", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
            {
                GetTextValueDialog gtvd = new GetTextValueDialog(TextValueDialogInputType.ComboBox);
                gtvd.Style             = (Style)App.Current.FindResource("dialogWindow");
                gtvd.Owner             = Application.Current.MainWindow;
                gtvd.Title             = "File Type";
                gtvd.Header            = "Enter the name for the file type:";
                gtvd.ItemsSource       = fileTypes;
                gtvd.DisplayMemberPath = "Name";
                gtvd.Width             = 500;

                FileType fileType = null;

                if (GeneralMethods.GetNullableBoolValue(gtvd.ShowDialog()))
                {
                    if (fileTypes.Any(p => p.Name.ToLower() == gtvd.Value.ToLower()))
                    {
                        fileType = fileTypes.First(p => p.Name.ToLower() == gtvd.Value.ToLower());
                    }
                    else
                    {
                        fileType               = new FileType();
                        fileType.Name          = gtvd.Value;
                        fileType.MediaItemType = associatedType;
                    }

                    fileType.Extensions.Add(extension);
                }

                return(fileType);
            }

            return(null);
        }
        private void miMerge_Click(object sender, RoutedEventArgs e)
        {
            List <FileType> selectedFileTypes = new List <FileType>();

            foreach (FileType selectedFileType in dgFileTypes.SelectedItems)
            {
                selectedFileTypes.Add(selectedFileType);
            }

            selectedFileTypes.Sort();

            GetTextValueDialog gtvd = new GetTextValueDialog(TextValueDialogInputType.TextBox);

            gtvd.Style  = (Style)FindResource("dialogWindow");
            gtvd.Owner  = Application.Current.MainWindow;
            gtvd.Title  = "Merge File Types";
            gtvd.Header = "Enter the name of the merged file types:";
            gtvd.Value  = selectedFileTypes[0].Name;
            gtvd.Width  = 500;

            if (GeneralMethods.GetNullableBoolValue(gtvd.ShowDialog()))
            {
                FileType mergedFileType;

                if (selectedFileTypes.Any(p => p.Name == gtvd.Value))
                {
                    mergedFileType = selectedFileTypes.First(p => p.Name == gtvd.Value);
                    selectedFileTypes.Remove(mergedFileType);
                }
                else
                {
                    if (FileType.FileTypeNameExists(gtvd.Value))
                    {
                        GeneralMethods.MessageBoxApplicationError("There is already another file type with the name \"" + gtvd.Value + "\"");
                        return;
                    }

                    mergedFileType               = new FileType();
                    mergedFileType.Name          = gtvd.Value;
                    mergedFileType.MediaItemType = AssociatedType;
                }

                foreach (FileType fileType in selectedFileTypes)
                {
                    foreach (IntelligentString extension in fileType.Extensions)
                    {
                        if (!mergedFileType.Extensions.Contains(extension))
                        {
                            mergedFileType.Extensions.Add(extension);
                        }
                    }
                }

                mergedFileType.Save();

                DeleteFileTypes(selectedFileTypes.ToArray());

                if (!FileTypes.Contains(mergedFileType))
                {
                    AddFileType(mergedFileType);
                }

                dgFileTypes.SelectedItem = mergedFileType;
            }
        }