diff --git a/DS4Windows/AutoProfileChecker.cs b/DS4Windows/AutoProfileChecker.cs index b03130b..e2e28af 100644 --- a/DS4Windows/AutoProfileChecker.cs +++ b/DS4Windows/AutoProfileChecker.cs @@ -99,10 +99,18 @@ namespace DS4WinWPF { if (Global.useTempProfile[j]) { - if (autoProfileDebugLogLevel > 0) - DS4Windows.AppLogger.LogToGui($"DEBUG: Auto-Profile. RestoreProfile Controller {j + 1}={Global.ProfilePath[j]} (default)", false); + if (DS4Windows.Global.AutoProfileRevertDefaultProfile) + { + if (autoProfileDebugLogLevel > 0) + DS4Windows.AppLogger.LogToGui($"DEBUG: Auto-Profile. Unknown process. Reverting to default profile. Controller {j + 1}={Global.ProfilePath[j]} (default)", false); - Global.LoadProfile(j, false, Program.rootHub); + Global.LoadProfile(j, false, Program.rootHub); + } + else + { + if (autoProfileDebugLogLevel > 0) + DS4Windows.AppLogger.LogToGui($"DEBUG: Auto-Profile. Unknown process. Existing profile left as active. Controller {j + 1}={Global.tempprofilename[j]}", false); + } } } diff --git a/DS4Windows/DS4Control/ScpUtil.cs b/DS4Windows/DS4Control/ScpUtil.cs index 32d93b2..904c429 100644 --- a/DS4Windows/DS4Control/ScpUtil.cs +++ b/DS4Windows/DS4Control/ScpUtil.cs @@ -966,6 +966,12 @@ namespace DS4Windows get { return m_Config.customSteamFolder; } } + public static bool AutoProfileRevertDefaultProfile + { + set { m_Config.autoProfileRevertDefaultProfile = value; } + get { return m_Config.autoProfileRevertDefaultProfile; } + } + // controller/profile specfic values public static int[] ButtonMouseSensitivity => m_Config.buttonMouseSensitivity; @@ -2209,6 +2215,9 @@ namespace DS4Windows OutContType.X360, OutContType.X360, OutContType.X360, OutContType.X360 }; + // TRUE=AutoProfile reverts to default profile if current foreground process is unknown, FALSE=Leave existing profile active when a foreground proces is unknown (ie. no matching auto-profile rule) + public bool autoProfileRevertDefaultProfile = true; + bool tempBool = false; public BackingStore() @@ -3960,6 +3969,8 @@ namespace DS4Windows catch { missingSetting = true; } try { Item = m_Xdoc.SelectSingleNode("/Profile/CustomSteamFolder"); customSteamFolder = Item.InnerText; } catch { missingSetting = true; } + try { Item = m_Xdoc.SelectSingleNode("/Profile/AutoProfileRevertDefaultProfile"); Boolean.TryParse(Item.InnerText, out autoProfileRevertDefaultProfile); } + catch { missingSetting = true; } for (int i = 0; i < 4; i++) { @@ -4032,6 +4043,7 @@ namespace DS4Windows XmlNode xmlUDPServListenAddress = m_Xdoc.CreateNode(XmlNodeType.Element, "UDPServerListenAddress", null); xmlUDPServListenAddress.InnerText = udpServListenAddress; Node.AppendChild(xmlUDPServListenAddress); XmlNode xmlUseCustomSteamFolder = m_Xdoc.CreateNode(XmlNodeType.Element, "UseCustomSteamFolder", null); xmlUseCustomSteamFolder.InnerText = useCustomSteamFolder.ToString(); Node.AppendChild(xmlUseCustomSteamFolder); XmlNode xmlCustomSteamFolder = m_Xdoc.CreateNode(XmlNodeType.Element, "CustomSteamFolder", null); xmlCustomSteamFolder.InnerText = customSteamFolder; Node.AppendChild(xmlCustomSteamFolder); + XmlNode xmlAutoProfileRevertDefaultProfile = m_Xdoc.CreateNode(XmlNodeType.Element, "AutoProfileRevertDefaultProfile", null); xmlAutoProfileRevertDefaultProfile.InnerText = autoProfileRevertDefaultProfile.ToString(); Node.AppendChild(xmlAutoProfileRevertDefaultProfile); for (int i = 0; i < 4; i++) { diff --git a/DS4Windows/DS4Forms/AutoProfiles.xaml b/DS4Windows/DS4Forms/AutoProfiles.xaml index 90e6df4..6fc2e90 100644 --- a/DS4Windows/DS4Forms/AutoProfiles.xaml +++ b/DS4Windows/DS4Forms/AutoProfiles.xaml @@ -120,6 +120,7 @@ + diff --git a/DS4Windows/DS4Forms/AutoProfiles.xaml.cs b/DS4Windows/DS4Forms/AutoProfiles.xaml.cs index 2360442..bd99a40 100644 --- a/DS4Windows/DS4Forms/AutoProfiles.xaml.cs +++ b/DS4Windows/DS4Forms/AutoProfiles.xaml.cs @@ -67,6 +67,8 @@ namespace DS4WinWPF.DS4Forms programListLV.DataContext = autoProfVM; programListLV.ItemsSource = autoProfVM.ProgramColl; + revertDefaultProfileOnUnknownCk.DataContext = autoProfVM; + autoProfVM.SearchFinished += AutoProfVM_SearchFinished; autoProfVM.CurrentItemChange += AutoProfVM_CurrentItemChange; diff --git a/DS4Windows/DS4Forms/MainWindow.xaml.cs b/DS4Windows/DS4Forms/MainWindow.xaml.cs index 619c208..484e8f6 100644 --- a/DS4Windows/DS4Forms/MainWindow.xaml.cs +++ b/DS4Windows/DS4Forms/MainWindow.xaml.cs @@ -45,7 +45,6 @@ namespace DS4WinWPF.DS4Forms private AutoProfileHolder autoProfileHolder; private NonFormTimer hotkeysTimer; private NonFormTimer autoProfilesTimer; - private static int autoProfileDebugLogLevel = 0; // 0=Dont log debug messages about active process and window titles to GUI Log screen. 1=Show debug log messages private AutoProfileChecker autoprofileChecker; private ProfileEditor editor; private bool preserveSize = true; @@ -346,8 +345,7 @@ Suspend support not enabled.", true); private void AutoProfControl_AutoDebugChanged(object sender, EventArgs e) { - autoprofileChecker.AutoProfileDebugLogLevel = - autoProfileDebugLogLevel = autoProfControl.AutoDebug == true ? 1 : 0; + autoprofileChecker.AutoProfileDebugLogLevel = autoProfControl.AutoDebug == true ? 1 : 0; } private void PowerEventArrive(object sender, EventArrivedEventArgs e) diff --git a/DS4Windows/DS4Forms/ViewModels/AutoProfilesViewModel.cs b/DS4Windows/DS4Forms/ViewModels/AutoProfilesViewModel.cs index 8c063c0..c9107c4 100644 --- a/DS4Windows/DS4Forms/ViewModels/AutoProfilesViewModel.cs +++ b/DS4Windows/DS4Forms/ViewModels/AutoProfilesViewModel.cs @@ -50,6 +50,12 @@ namespace DS4WinWPF.DS4Forms.ViewModels public delegate void AutoProfileStateHandler(AutoProfilesViewModel sender, bool state); public event AutoProfileStateHandler AutoProfileSystemChange; + public bool RevertDefaultProfileOnUnknown + { + get => DS4Windows.Global.AutoProfileRevertDefaultProfile; + set => DS4Windows.Global.AutoProfileRevertDefaultProfile = value; + } + public AutoProfilesViewModel(AutoProfileHolder autoProfileHolder, ProfileList profileList) { programColl = new ObservableCollection();