< Summary

Class:LeftMenuButtonToggleView
Assembly:BuilderProjectsPanel
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/BuilderProjectsPanel/Scripts/Views/LeftMenuButtonToggleView.cs
Covered lines:17
Uncovered lines:25
Coverable lines:42
Total lines:116
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/Scripts/MainScripts/DCL/Controllers/HUD/BuilderProjectsPanel/Scripts/Views/LeftMenuButtonToggleView.cs

#LineLine coverage
 1using System;
 2using System.Linq;
 3using TMPro;
 4using UnityEngine;
 5using UnityEngine.EventSystems;
 6using UnityEngine.UI;
 7
 8internal class LeftMenuButtonToggleView : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler
 9{
 10    public static event Action<LeftMenuButtonToggleView> OnToggleOn;
 11
 12    [Header("Action")]
 13    [SerializeField] public SectionId openSection;
 14
 15    [Header("Settings")]
 16    [SerializeField] private Color colorBackgroundDefault;
 17    [SerializeField] private Color colorBackgroundSelected;
 18    [SerializeField] private Color colorTextDefault;
 19    [SerializeField] private Color colorTextSelected;
 20
 21    [Header("References")]
 22    [SerializeField] private Image imageBackground;
 23    [SerializeField] private TextMeshProUGUI text;
 24
 25    public bool isOn
 26    {
 27        set
 28        {
 029            if (isToggleOn == value)
 030                return;
 31
 032            SetIsOnWithoutNotify(value);
 33
 034            if (value)
 35            {
 036                OnToggleOn?.Invoke(this);
 37            }
 038        }
 039        get { return isToggleOn; }
 40    }
 41
 42    private bool isToggleOn = false;
 43    private bool isSetup = false;
 44
 45    public void Setup()
 46    {
 14447        if (isSetup)
 048            return;
 49
 14450        isSetup = true;
 14451        OnToggleOn += OnReceiveToggleOn;
 14452    }
 53
 54    public void SetIsOnWithoutNotify(bool value)
 55    {
 2756        isToggleOn = value;
 57
 2758        if (isToggleOn)
 59        {
 560            SetSelectColor();
 561        }
 62        else
 63        {
 2264            SetDefaultColor();
 65        }
 2266    }
 67
 6068    private void OnDestroy() { OnToggleOn -= OnReceiveToggleOn; }
 69
 70    void IPointerEnterHandler.OnPointerEnter(PointerEventData eventData)
 71    {
 072        if (isOn)
 073            return;
 74
 075        SetSelectColor();
 076    }
 77
 78    void IPointerExitHandler.OnPointerExit(PointerEventData eventData)
 79    {
 080        if (isOn)
 081            return;
 82
 083        SetDefaultColor();
 084    }
 85
 86    void IPointerClickHandler.OnPointerClick(PointerEventData eventData)
 87    {
 088        if (isOn)
 089            return;
 90
 091        isOn = true;
 092    }
 93
 94    private void SetSelectColor()
 95    {
 596        imageBackground.color = colorBackgroundSelected;
 597        text.color = colorTextSelected;
 598    }
 99
 100    private void SetDefaultColor()
 101    {
 22102        imageBackground.color = colorBackgroundDefault;
 22103        text.color = colorTextDefault;
 22104    }
 105
 106    private void OnReceiveToggleOn(LeftMenuButtonToggleView toggle)
 107    {
 0108        if (!isOn)
 0109            return;
 110
 0111        if (toggle != this)
 112        {
 0113            isOn = false;
 114        }
 0115    }
 116}