< 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:17
Uncovered lines:25
Coverable lines:42
Total lines:119
Line coverage:40.4% (17 of 42)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Setup()0%2.032080%
SetIsOnWithoutNotify(...)0%220100%
OnDestroy()0%110100%
OnPointerEnter(...)0%6200%
OnPointerExit(...)0%6200%
OnPointerClick(...)0%6200%
SetSelectColor()0%110100%
SetDefaultColor()0%110100%
OnReceiveToggleOn(...)0%12300%

File(s)

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

#LineLine coverage
 1using System;
 2using System.Linq;
 3using TMPro;
 4using UnityEngine;
 5using UnityEngine.EventSystems;
 6using UnityEngine.UI;
 7
 8namespace DCL.Builder
 9{
 10    internal class LeftMenuButtonToggleView : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHan
 11    {
 12        public static event Action<LeftMenuButtonToggleView> OnToggleOn;
 13
 14        [Header("Action")]
 15        [SerializeField] public SectionId openSection;
 16
 17        [Header("Settings")]
 18        [SerializeField] private Color colorBackgroundDefault;
 19        [SerializeField] private Color colorBackgroundSelected;
 20        [SerializeField] private Color colorTextDefault;
 21        [SerializeField] private Color colorTextSelected;
 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)
 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
 47        public void Setup()
 48        {
 15349            if (isSetup)
 050                return;
 51
 15352            isSetup = true;
 15353            OnToggleOn += OnReceiveToggleOn;
 15354        }
 55
 56        public void SetIsOnWithoutNotify(bool value)
 57        {
 1858            isToggleOn = value;
 59
 1860            if (isToggleOn)
 61            {
 362                SetSelectColor();
 363            }
 64            else
 65            {
 1566                SetDefaultColor();
 67            }
 1568        }
 69
 4870        private void OnDestroy() { OnToggleOn -= OnReceiveToggleOn; }
 71
 72        void IPointerEnterHandler.OnPointerEnter(PointerEventData eventData)
 73        {
 074            if (isOn)
 075                return;
 76
 077            SetSelectColor();
 078        }
 79
 80        void IPointerExitHandler.OnPointerExit(PointerEventData eventData)
 81        {
 082            if (isOn)
 083                return;
 84
 085            SetDefaultColor();
 086        }
 87
 88        void IPointerClickHandler.OnPointerClick(PointerEventData eventData)
 89        {
 090            if (isOn)
 091                return;
 92
 093            isOn = true;
 094        }
 95
 96        private void SetSelectColor()
 97        {
 398            imageBackground.color = colorBackgroundSelected;
 399            text.color = colorTextSelected;
 3100        }
 101
 102        private void SetDefaultColor()
 103        {
 15104            imageBackground.color = colorBackgroundDefault;
 15105            text.color = colorTextDefault;
 15106        }
 107
 108        private void OnReceiveToggleOn(LeftMenuButtonToggleView toggle)
 109        {
 0110            if (!isOn)
 0111                return;
 112
 0113            if (toggle != this)
 114            {
 0115                isOn = false;
 116            }
 0117        }
 118    }
 119}