/// <summary> /// Load pad setting into control /// </summary> public void LoadPadSetting(Guid?padSettingChecksum) { // Load PadSetting object from configuration. PadSetting ps = null; if (padSettingChecksum.HasValue) { ps = SettingsManager.GetPadSetting(padSettingChecksum.Value); } if (ps == null) { ps = new PadSetting(); } // Stop monitoring changes. CurrentPadSetting.PropertyChanged -= CurrentPadSetting_PropertyChanged; // Load values into current object which is attached to all controls. CurrentPadSetting.Load(ps); // Rebind pad setting to controls. DPadPanel.SetBinding(CurrentPadSetting); GeneralPanel.SetBinding(MappedTo, CurrentPadSetting); AdvancedPanel.SetBinding(CurrentPadSetting); LeftTriggerPanel.SetBinding(CurrentPadSetting); RightTriggerPanel.SetBinding(CurrentPadSetting); LeftThumbXPanel.SetBinding(CurrentPadSetting); LeftThumbYPanel.SetBinding(CurrentPadSetting); RightThumbXPanel.SetBinding(CurrentPadSetting); RightThumbYPanel.SetBinding(CurrentPadSetting); ForceFeedbackPanel.SetBinding(MappedTo, CurrentPadSetting); ForceFeedbackPanel.LeftForceFeedbackMotorPanel.SetBinding(CurrentPadSetting, 0); ForceFeedbackPanel.RightForceFeedbackMotorPanel.SetBinding(CurrentPadSetting, 1); PadFootPanel.SetBinding(MappedTo, _CurrentUserDevice, CurrentPadSetting); // Start monitoring changes. CurrentPadSetting.PropertyChanged += CurrentPadSetting_PropertyChanged; //SettingsManager.Current.LoadPadSettingsIntoSelectedDevice(MappedTo, CurrentPadSetting); }
private void CurrentPadSetting_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { if (e.PropertyName != nameof(PadSetting.PadSettingChecksum)) { var oldChecksum = CurrentPadSetting.PadSettingChecksum; var newChecksum = CurrentPadSetting.CleanAndGetCheckSum(); // If checksum changed. if (oldChecksum != newChecksum) { CurrentPadSetting.PadSettingChecksum = newChecksum; System.Diagnostics.Debug.WriteLine($"{MappedTo} PadSettingChecksum: {oldChecksum} => {newChecksum}"); // Time to save settings by notifying that it changed. SettingsManager.Current.SavePadSetting(CurrentUserSetting, CurrentPadSetting); //OnSettingChanged?.Invoke(this, new EventArgs<UserSetting>(CurrentUserSetting)); } } }