diff --git a/MPF.Core/UI/ViewModels/MainViewModel.cs b/MPF.Core/UI/ViewModels/MainViewModel.cs index 75e54daa..8d2f4ccc 100644 --- a/MPF.Core/UI/ViewModels/MainViewModel.cs +++ b/MPF.Core/UI/ViewModels/MainViewModel.cs @@ -1583,35 +1583,6 @@ namespace MPF.Core.UI.ViewModels this.DriveSpeed = speed; } - /// - /// Returns False if a given InternalProgram does not support a given MediaType - /// - public bool ProgramSupportsMedia(InternalProgram program, MediaType? media) - { - switch (program) - { - case InternalProgram.Redumper: - switch (media) - { - case MediaType.HDDVD: - return false; - case MediaType.BluRay: - return false; - default: - return true; - } - case InternalProgram.Aaru: - case InternalProgram.DiscImageCreator: - switch (media) - { - default: - return true; - } - default: - return true; - } - } - /// /// Determine if the dumping button should be enabled /// @@ -1621,7 +1592,7 @@ namespace MPF.Core.UI.ViewModels && Drives.Count > 0 && this.CurrentSystem != null && this.CurrentMediaType != null - && ProgramSupportsMedia(this.CurrentProgram, this.CurrentMediaType); + && Tools.ProgramSupportsMedia(this.CurrentProgram, this.CurrentMediaType); } /// diff --git a/MPF.Core/Utilities/Tools.cs b/MPF.Core/Utilities/Tools.cs index 1ac20f33..1721c17c 100644 --- a/MPF.Core/Utilities/Tools.cs +++ b/MPF.Core/Utilities/Tools.cs @@ -147,6 +147,99 @@ namespace MPF.Core.Utilities }; #endif } + + /// + /// Returns false if a given InternalProgram does not support a given MediaType + /// + public static bool ProgramSupportsMedia(InternalProgram program, MediaType? type) + { + // If the media type is not set, return false + if (type == null || type == MediaType.NONE) + return false; + +#if NET48 + switch (program) + { + case InternalProgram.Redumper: + switch (type) + { + // Formats considered at least partially dumpable by Redumper + case MediaType.CDROM: + case MediaType.DVD: + case MediaType.GDROM: + return true; + + // All other formats considered unsupported + default: + return false; + } + case InternalProgram.Aaru: + case InternalProgram.DiscImageCreator: + switch (type) + { + // Formats considered at least partially supported + case MediaType.BluRay: + case MediaType.CDROM: + case MediaType.DVD: + case MediaType.FloppyDisk: + case MediaType.HardDisk: + case MediaType.CompactFlash: + case MediaType.SDCard: + case MediaType.FlashDrive: + case MediaType.HDDVD: + case MediaType.NintendoGameCubeGameDisc: + case MediaType.NintendoWiiOpticalDisc: + return true; + + // All other formats considered unsupported + default: + return false; + } + // All other InternalPrograms are not used for dumping + default: + return false; + } +#else + switch (program) + { + case InternalProgram.Redumper: + return type switch + { + // Formats considered at least partially supported by Redumper + MediaType.CDROM + or MediaType.DVD + or MediaType.GDROM => true, + + // All other formats considered unsupported + _ => false, + }; + case InternalProgram.Aaru: + case InternalProgram.DiscImageCreator: + return type switch + { + // Formats considered at least partially supported by MPF + MediaType.BluRay + or MediaType.CDROM + or MediaType.DVD + or MediaType.GDROM + or MediaType.FloppyDisk + or MediaType.CompactFlash + or MediaType.SDCard + or MediaType.FlashDrive + or MediaType.HardDisk + or MediaType.HDDVD + or MediaType.NintendoGameCubeGameDisc + or MediaType.NintendoWiiOpticalDisc => true, + + // All other formats considered unsupported + _ => false, + }; + // All other InternalPrograms are not supported for dumping + default: + return false; + } +#endif + } #endregion