private void DrawSettingsElementList(List <NotificationEditorSetting> settings, bool disabled, GUIStyle styleToggle, GUIStyle styleDropwDown, Rect rect, int layer = 0) { foreach (var setting in settings) { EditorGUI.BeginDisabledGroup(disabled); Rect r = EditorGUILayout.BeginHorizontal(); GUILayout.Space(layer * 13); var styleLabel = new GUIStyle(GUI.skin.GetStyle("Label")); var width = rect.width - kSlotSize * 3 - layer * 13; styleLabel.fixedWidth = width; styleLabel.wordWrap = true; GUILayout.Label(new GUIContent(setting.label, setting.tooltip), styleLabel); if (setting.val.GetType() == typeof(bool)) { setting.val = (object)EditorGUILayout.Toggle((bool)setting.val, styleToggle); } else if (setting.val.GetType() == typeof(PresentationOption)) { setting.val = (PresentationOption)EditorGUILayout.EnumFlagsField((PresentationOptionEditor)setting.val, styleDropwDown); if ((int)(PresentationOptionEditor)setting.val == 0) { setting.val = (PresentationOption)PresentationOptionEditor.All; } } EditorGUILayout.EndHorizontal(); EditorGUI.EndDisabledGroup(); bool dependentDisabled = false; if (setting.val is bool) { dependentDisabled = !(bool)setting.val; } if (setting.dependentSettings != null) { layer++; DrawSettingsElementList(setting.dependentSettings, dependentDisabled, styleToggle, styleDropwDown, rect, layer); } manager.SaveSetting(setting); } }
private void DrawSettingsElementList(BuildTargetGroup target, List <NotificationEditorSetting> settings, bool disabled, GUIStyle styleToggle, GUIStyle styleDropwDown, Rect rect, int layer = 0) { int totalHeight = 0; foreach (var setting in settings) { EditorGUI.BeginDisabledGroup(disabled); Rect r = EditorGUILayout.BeginHorizontal(); GUILayout.Space(layer * 13); var styleLabel = new GUIStyle(GUI.skin.GetStyle("Label")); var width = rect.width - kSlotSize * 4.5f - layer * 13; styleLabel.fixedWidth = width; styleLabel.wordWrap = true; GUILayout.Label(new GUIContent(setting.label, setting.tooltip), styleLabel); if (setting.val.GetType() == typeof(bool)) { setting.val = (object)EditorGUILayout.Toggle((bool)setting.val, styleToggle); } else if (setting.val.GetType() == typeof(string)) { setting.val = (object)EditorGUILayout.TextField((string)setting.val); } else if (setting.val.GetType() == typeof(PresentationOption)) { setting.val = (PresentationOption)EditorGUILayout.EnumFlagsField((PresentationOptionEditor)setting.val, styleDropwDown); if ((int)(PresentationOptionEditor)setting.val == 0) { setting.val = (PresentationOption)PresentationOptionEditor.All; } } else if (setting.val.GetType() == typeof(AuthorizationOption)) { setting.val = (AuthorizationOption)EditorGUILayout.EnumFlagsField((AuthorizationOptionEditor)setting.val, styleDropwDown); if ((int)(AuthorizationOptionEditor)setting.val == 0) { setting.val = (AuthorizationOption)AuthorizationOptionEditor.All; } } EditorGUILayout.EndHorizontal(); EditorGUI.EndDisabledGroup(); bool dependentDisabled = false; if (setting.val is bool) { dependentDisabled = !(bool)setting.val; } if (setting.dependentSettings != null) { var childLayer = layer; childLayer++; DrawSettingsElementList(target, setting.dependentSettings, dependentDisabled, styleToggle, styleDropwDown, rect, childLayer); } if (setting.requiredSettings != null && !disabled) { if ((bool)setting.val) { foreach (var requiredSettingKey in setting.requiredSettings) { var requiredSetting = manager.iOSNotificationEditorSettings.Find(s => s.key == requiredSettingKey); if (requiredSetting != null) { requiredSetting.val = setting.val; manager.SaveSetting(requiredSetting, target); } } } } manager.SaveSetting(setting, target); } }