From ad8a623f1670584f73981cb09daa4caaa5585aae Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 20 Dec 2024 21:46:03 -0500 Subject: [PATCH] Selectively rebuild program list --- CHANGELIST.md | 1 + MPF.Frontend/ViewModels/MainViewModel.cs | 10 ++++++---- MPF.UI/Windows/MainWindow.xaml.cs | 6 +++--- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/CHANGELIST.md b/CHANGELIST.md index e885a173..ab0ac467 100644 --- a/CHANGELIST.md +++ b/CHANGELIST.md @@ -106,6 +106,7 @@ - Add README files for two libraries - Simplify output name assembly logic - Fix output name null edge case +- Selectively rebuild program list ### 3.2.4 (2024-11-24) diff --git a/MPF.Frontend/ViewModels/MainViewModel.cs b/MPF.Frontend/ViewModels/MainViewModel.cs index ecf02047..ca84f4a4 100644 --- a/MPF.Frontend/ViewModels/MainViewModel.cs +++ b/MPF.Frontend/ViewModels/MainViewModel.cs @@ -574,7 +574,7 @@ namespace MPF.Frontend.ViewModels _processUserInfo = processUserInfo; // Finish initializing the rest of the values - InitializeUIValues(removeEventHandlers: false, rescanDrives: true); + InitializeUIValues(removeEventHandlers: false, rebuildPrograms: true, rescanDrives: true); } #region Property Updates @@ -977,7 +977,7 @@ namespace MPF.Frontend.ViewModels // If settings were changed, reinitialize the UI if (savedSettings) - InitializeUIValues(removeEventHandlers: true, rescanDrives: true); + InitializeUIValues(removeEventHandlers: true, rebuildPrograms: true, rescanDrives: true); } #endregion @@ -988,8 +988,9 @@ namespace MPF.Frontend.ViewModels /// Performs UI value setup end to end /// /// Whether event handlers need to be removed first + /// Whether the available program list should be rebuilt /// Whether drives should be rescanned or not - public void InitializeUIValues(bool removeEventHandlers, bool rescanDrives) + public void InitializeUIValues(bool removeEventHandlers, bool rebuildPrograms, bool rescanDrives) { // Disable the dumping button StartStopButtonEnabled = false; @@ -1024,7 +1025,8 @@ namespace MPF.Frontend.ViewModels SetCurrentDiscType(); // Set the dumping program - PopulateInternalPrograms(); + if (rebuildPrograms) + PopulateInternalPrograms(); // Set the initial environment and UI values SetSupportedDriveSpeed(); diff --git a/MPF.UI/Windows/MainWindow.xaml.cs b/MPF.UI/Windows/MainWindow.xaml.cs index 73cd1beb..d77000bb 100644 --- a/MPF.UI/Windows/MainWindow.xaml.cs +++ b/MPF.UI/Windows/MainWindow.xaml.cs @@ -518,7 +518,7 @@ namespace MPF.UI.Windows public void DriveLetterComboBoxSelectionChanged(object sender, SelectionChangedEventArgs e) { if (MainViewModel.CanExecuteSelectionChanged) - MainViewModel.InitializeUIValues(removeEventHandlers: true, rescanDrives: false); + MainViewModel.InitializeUIValues(removeEventHandlers: true, rebuildPrograms: false, rescanDrives: false); } /// @@ -552,7 +552,7 @@ namespace MPF.UI.Windows /// Handler for MediaScanButton Click event /// public void MediaScanButtonClick(object sender, RoutedEventArgs e) => - MainViewModel.InitializeUIValues(removeEventHandlers: true, rescanDrives: true); + MainViewModel.InitializeUIValues(removeEventHandlers: true, rebuildPrograms: false, rescanDrives: true); /// /// Handler for MediaTypeComboBox SelectionChanged event @@ -606,7 +606,7 @@ namespace MPF.UI.Windows if (MainViewModel.Options.FastUpdateLabel) MainViewModel.FastUpdateLabel(removeEventHandlers: true); else - MainViewModel.InitializeUIValues(removeEventHandlers: true, rescanDrives: false); + MainViewModel.InitializeUIValues(removeEventHandlers: true, rebuildPrograms: false, rescanDrives: false); } }