private void UpdateSetting(BaseSetting setting, bool wasChanged) { #region BooleanSettings BooleanSetting newValue = setting as BooleanSetting; if (newValue != null) { var oldValue = Settings.FirstOrDefault(set => set.Equals(newValue)); if (oldValue != null) { BooleanSetting oldBoolValue = oldValue as BooleanSetting; if (oldBoolValue != null) { if (wasChanged) { oldBoolValue.ChangeValue(newValue.Value); } else { oldBoolValue.ChangeValue(oldBoolValue.Value); } PublishSettingChangeNotification(setting, wasChanged); return; } } } #endregion #region IntegerSettings IntegerSetting newIntValue = setting as IntegerSetting; if (newIntValue != null) { var oldValue = Settings.FirstOrDefault(set => set.Equals(newIntValue)); if (oldValue != null) { IntegerSetting oldIntValue = oldValue as IntegerSetting; if (oldIntValue != null) { if (wasChanged) { oldIntValue.ChangeValue(newIntValue.Value); } else { oldIntValue.ChangeValue(oldIntValue.Value); } PublishSettingChangeNotification(setting, wasChanged); return; } } } #endregion #region SkinSettings SkinSetting newSkinValue = setting as SkinSetting; if (newSkinValue != null) { var oldValue = Settings.FirstOrDefault(set => set.Equals(newSkinValue)); if (oldValue != null) { SkinSetting oldSkinValue = oldValue as SkinSetting; if (oldSkinValue != null) { if (wasChanged) { oldSkinValue.ChangeValue(newSkinValue.Value); Configuration.Skinning.CurrentSkin = newSkinValue.Value; } else { oldSkinValue.ChangeValue(oldSkinValue.Value); } PublishSettingChangeNotification(setting, wasChanged); return; } } } #endregion #region LocalizationSettings if (setting is LocalizationSetting newLocalizationValue) { var oldValue = Settings.FirstOrDefault(set => set.Equals(newLocalizationValue)); if (oldValue != null) { if (oldValue is LocalizationSetting oldLocalizationValue) { if (wasChanged) { oldLocalizationValue.ChangeValue(newLocalizationValue.Value); Configuration.Localization.CurrentLanguage = newLocalizationValue.Value; } else { oldLocalizationValue.ChangeValue(oldLocalizationValue.Value); } PublishSettingChangeNotification(setting, wasChanged); return; } } } #endregion }