< Summary

Class:DCL.Builder.LeftMenuButtonToggleView
Assembly:BuilderProjectsPanel
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/HUD/ProjectsPanelHUD/Scripts/Views/LeftMenuButtonToggleView.cs
Covered lines:21
Uncovered lines:34
Coverable lines:55
Total lines:141
Line coverage:38.1% (21 of 55)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Setup()0%2.032080%
Enable()0%2.032080%
Disable()0%2100%
SetIsOnWithoutNotify(...)0%3.033085.71%
OnDestroy()0%110100%
OnPointerEnter(...)0%12300%
OnPointerExit(...)0%12300%
OnPointerClick(...)0%12300%
SetSelectColor()0%110100%
SetDisableColor()0%2100%
SetDefaultColor()0%110100%
OnReceiveToggleOn(...)0%20400%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/HUD/ProjectsPanelHUD/Scripts/Views/LeftMenuButtonToggleView.cs

#LineLine coverage
 1using System;
 2using TMPro;
 3using UnityEngine;
 4using UnityEngine.EventSystems;
 5using UnityEngine.UI;
 6
 7namespace DCL.Builder
 8{
 9    internal class LeftMenuButtonToggleView : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHan
 10    {
 11        public static event Action<LeftMenuButtonToggleView> OnToggleOn;
 12
 13        [Header("Action")]
 14        [SerializeField] public SectionId openSection;
 15
 16        [Header("Settings")]
 17        [SerializeField] private Color colorBackgroundDefault;
 18        [SerializeField] private Color colorBackgroundSelected;
 19        [SerializeField] private Color colorTextDefault;
 20        [SerializeField] private Color colorTextSelected;
 21        [SerializeField] private Color colorTextDisabled;
 22
 23        [Header("References")]
 24        [SerializeField] private Image imageBackground;
 25        [SerializeField] private TextMeshProUGUI text;
 26
 27        public bool isOn
 28        {
 29            set
 30            {
 031                if (isToggleOn == value || isDisabled)
 032                    return;
 33
 034                SetIsOnWithoutNotify(value);
 35
 036                if (value)
 37                {
 038                    OnToggleOn?.Invoke(this);
 39                }
 040            }
 041            get { return isToggleOn; }
 42        }
 43
 44        private bool isToggleOn = false;
 45        private bool isSetup = false;
 46        private bool isDisabled = false;
 47
 48        public void Setup()
 49        {
 11250            if (isSetup)
 051                return;
 52
 11253            isSetup = true;
 11254            OnToggleOn += OnReceiveToggleOn;
 11255        }
 56
 57        public void Enable()
 58        {
 9159            isDisabled = false;
 9160            if(isToggleOn)
 061                SetSelectColor();
 62            else
 9163                SetDefaultColor();
 9164        }
 65
 66        public void Disable()
 67        {
 068            isDisabled = true;
 069            SetDisableColor();
 070        }
 71
 72        public void SetIsOnWithoutNotify(bool value)
 73        {
 1474            isToggleOn = value;
 75
 1476            if (isDisabled)
 077                SetDisableColor();
 1478            else if (isToggleOn)
 179                SetSelectColor();
 80            else
 1381                SetDefaultColor();
 1382        }
 83
 2484        private void OnDestroy() { OnToggleOn -= OnReceiveToggleOn; }
 85
 86        void IPointerEnterHandler.OnPointerEnter(PointerEventData eventData)
 87        {
 088            if (isOn || isDisabled)
 089                return;
 90
 091            SetSelectColor();
 092        }
 93
 94        void IPointerExitHandler.OnPointerExit(PointerEventData eventData)
 95        {
 096            if (isOn || isDisabled)
 097                return;
 98
 099            SetDefaultColor();
 0100        }
 101
 102        void IPointerClickHandler.OnPointerClick(PointerEventData eventData)
 103        {
 0104            AudioScriptableObjects.buttonClick.Play(true);
 105
 0106            if (isOn || isDisabled)
 0107                return;
 108
 0109            isOn = true;
 0110        }
 111
 112        private void SetSelectColor()
 113        {
 1114            imageBackground.color = colorBackgroundSelected;
 1115            text.color = colorTextSelected;
 1116        }
 117
 118        private void SetDisableColor()
 119        {
 0120            imageBackground.color = colorBackgroundSelected;
 0121            text.color = colorTextDisabled;
 0122        }
 123
 124        private void SetDefaultColor()
 125        {
 104126            imageBackground.color = colorBackgroundDefault;
 104127            text.color = colorTextDefault;
 104128        }
 129
 130        private void OnReceiveToggleOn(LeftMenuButtonToggleView toggle)
 131        {
 0132            if (!isOn || isDisabled)
 0133                return;
 134
 0135            if (toggle != this)
 136            {
 0137                isOn = false;
 138            }
 0139        }
 140    }
 141}