summaryrefslogtreecommitdiff
path: root/Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/UIControls/ToggleGroup.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/UIControls/ToggleGroup.cs')
-rw-r--r--Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/UIControls/ToggleGroup.cs73
1 files changed, 73 insertions, 0 deletions
diff --git a/Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/UIControls/ToggleGroup.cs b/Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/UIControls/ToggleGroup.cs
new file mode 100644
index 0000000..da5e021
--- /dev/null
+++ b/Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/UIControls/ToggleGroup.cs
@@ -0,0 +1,73 @@
+using System;
+using System.Linq;
+using System.Collections.Generic;
+using UnityEngine.EventSystems;
+
+namespace UnityEngine.UI
+{
+ [AddComponentMenu("UI/Toggle Group", 32)]
+ [DisallowMultipleComponent]
+ public class ToggleGroup : UIBehaviour
+ {
+ [SerializeField] private bool m_AllowSwitchOff = false;
+ public bool allowSwitchOff { get { return m_AllowSwitchOff; } set { m_AllowSwitchOff = value; } }
+
+ private List<Toggle> m_Toggles = new List<Toggle>();
+
+ protected ToggleGroup()
+ {}
+
+ private void ValidateToggleIsInGroup(Toggle toggle)
+ {
+ if (toggle == null || !m_Toggles.Contains(toggle))
+ throw new ArgumentException(string.Format("Toggle {0} is not part of ToggleGroup {1}", new object[] {toggle, this}));
+ }
+
+ public void NotifyToggleOn(Toggle toggle)
+ {
+ ValidateToggleIsInGroup(toggle);
+
+ // disable all toggles in the group
+ for (var i = 0; i < m_Toggles.Count; i++)
+ {
+ if (m_Toggles[i] == toggle)
+ continue;
+
+ m_Toggles[i].isOn = false;
+ }
+ }
+
+ public void UnregisterToggle(Toggle toggle)
+ {
+ if (m_Toggles.Contains(toggle))
+ m_Toggles.Remove(toggle);
+ }
+
+ public void RegisterToggle(Toggle toggle)
+ {
+ if (!m_Toggles.Contains(toggle))
+ m_Toggles.Add(toggle);
+ }
+
+ public bool AnyTogglesOn()
+ {
+ return m_Toggles.Find(x => x.isOn) != null;
+ }
+
+ public IEnumerable<Toggle> ActiveToggles()
+ {
+ return m_Toggles.Where(x => x.isOn);
+ }
+
+ public void SetAllTogglesOff()
+ {
+ bool oldAllowSwitchOff = m_AllowSwitchOff;
+ m_AllowSwitchOff = true;
+
+ for (var i = 0; i < m_Toggles.Count; i++)
+ m_Toggles[i].isOn = false;
+
+ m_AllowSwitchOff = oldAllowSwitchOff;
+ }
+ }
+}