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