diff --git a/CHANGELIST.md b/CHANGELIST.md
index 5fc773fc..9c553914 100644
--- a/CHANGELIST.md
+++ b/CHANGELIST.md
@@ -29,6 +29,7 @@
- Custom theme colors
- Use speed for CLI from configuration
- Fix minimum number of args checks
+- Move GetDefaultSpeedForMediaType to common location
### 3.2.0 (2024-06-20)
diff --git a/MPF.CLI/Program.cs b/MPF.CLI/Program.cs
index ac841c28..67aad996 100644
--- a/MPF.CLI/Program.cs
+++ b/MPF.CLI/Program.cs
@@ -104,26 +104,7 @@ namespace MPF.CLI
string filepath = args[3].Trim('"');
// Get the speed from the options
- int speed = mediaType switch
- {
- // CD dump speed
- MediaType.CDROM => options.PreferredDumpSpeedCD,
- MediaType.GDROM => options.PreferredDumpSpeedCD,
-
- // DVD dump speed
- MediaType.DVD => options.PreferredDumpSpeedDVD,
- MediaType.NintendoGameCubeGameDisc => options.PreferredDumpSpeedDVD,
- MediaType.NintendoWiiOpticalDisc => options.PreferredDumpSpeedDVD,
-
- // HD-DVD dump speed
- MediaType.HDDVD => options.PreferredDumpSpeedHDDVD,
-
- // BD dump speed
- MediaType.BluRay => options.PreferredDumpSpeedBD,
-
- // Default
- _ => options.PreferredDumpSpeedCD,
- };
+ int speed = FrontendTool.GetDefaultSpeedForMediaType(mediaType, options);
// Now populate an environment
var drive = Drive.Create(null, path);
diff --git a/MPF.Frontend/Tools/FrontendTool.cs b/MPF.Frontend/Tools/FrontendTool.cs
index fa43de9e..e6837a73 100644
--- a/MPF.Frontend/Tools/FrontendTool.cs
+++ b/MPF.Frontend/Tools/FrontendTool.cs
@@ -11,6 +11,33 @@ namespace MPF.Frontend.Tools
{
#region Information Extraction
+ ///
+ /// Get the default speed for a given media type from the supplied options
+ ///
+ public static int GetDefaultSpeedForMediaType(MediaType? mediaType, Options options)
+ {
+ return mediaType switch
+ {
+ // CD dump speed
+ MediaType.CDROM => options.PreferredDumpSpeedCD,
+ MediaType.GDROM => options.PreferredDumpSpeedCD,
+
+ // DVD dump speed
+ MediaType.DVD => options.PreferredDumpSpeedDVD,
+ MediaType.NintendoGameCubeGameDisc => options.PreferredDumpSpeedDVD,
+ MediaType.NintendoWiiOpticalDisc => options.PreferredDumpSpeedDVD,
+
+ // HD-DVD dump speed
+ MediaType.HDDVD => options.PreferredDumpSpeedHDDVD,
+
+ // BD dump speed
+ MediaType.BluRay => options.PreferredDumpSpeedBD,
+
+ // Default
+ _ => options.PreferredDumpSpeedCD,
+ };
+ }
+
///
/// Get the current system from the drive volume label
///
diff --git a/MPF.Frontend/ViewModels/MainViewModel.cs b/MPF.Frontend/ViewModels/MainViewModel.cs
index 65b36fb4..56de8869 100644
--- a/MPF.Frontend/ViewModels/MainViewModel.cs
+++ b/MPF.Frontend/ViewModels/MainViewModel.cs
@@ -1969,26 +1969,7 @@ namespace MPF.Frontend.ViewModels
VerboseLogLn($"Supported media speeds: {string.Join(", ", this.DriveSpeeds.Select(ds => ds.ToString()).ToArray())}");
// Set the selected speed
- int speed = (CurrentMediaType) switch
- {
- // CD dump speed
- MediaType.CDROM => Options.PreferredDumpSpeedCD,
- MediaType.GDROM => Options.PreferredDumpSpeedCD,
-
- // DVD dump speed
- MediaType.DVD => Options.PreferredDumpSpeedDVD,
- MediaType.NintendoGameCubeGameDisc => Options.PreferredDumpSpeedDVD,
- MediaType.NintendoWiiOpticalDisc => Options.PreferredDumpSpeedDVD,
-
- // HD-DVD dump speed
- MediaType.HDDVD => Options.PreferredDumpSpeedHDDVD,
-
- // BD dump speed
- MediaType.BluRay => Options.PreferredDumpSpeedBD,
-
- // Default
- _ => Options.PreferredDumpSpeedCD,
- };
+ int speed = FrontendTool.GetDefaultSpeedForMediaType(CurrentMediaType, Options);
VerboseLogLn($"Setting drive speed to: {speed}");
this.DriveSpeed = speed;