< Summary

Class:DCL.SettingsPanelHUD.Controls.DropdownControlView
Assembly:SettingsPanelHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/SettingsPanelHUD/Scripts/ControlsModule/DropdownControlView.cs
Covered lines:33
Uncovered lines:2
Coverable lines:35
Total lines:83
Line coverage:94.2% (33 of 35)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Awake()0%110100%
Initialize(...)0%110100%
SetOption(...)0%110100%
SetLabels(...)0%440100%
OnDestroy()0%220100%
RefreshControl()0%220100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/SettingsPanelHUD/Scripts/ControlsModule/DropdownControlView.cs

#LineLine coverage
 1using System.Collections.Generic;
 2using System.Linq;
 3using DCL.SettingsCommon.SettingsControllers.BaseControllers;
 4using TMPro;
 5using UnityEngine;
 6
 7namespace DCL.SettingsPanelHUD.Controls
 8{
 9    public class DropdownControlView : SettingsControlView
 10    {
 11        [SerializeField] private TMP_Dropdown dropdown;
 12
 13        private SpinBoxSettingsControlController spinBoxController;
 14        private PointerClickEventInterceptor pointerClick;
 15
 16        private void Awake()
 17        {
 718            pointerClick = dropdown.GetComponent<PointerClickEventInterceptor>();
 719        }
 20
 21        public override void Initialize(SettingsControlModel model, SettingsControlController controller)
 22        {
 23            // we use spinbox control model and control controller for compatibility
 724            SetLabels(((SpinBoxControlModel)model).spinBoxLabels);
 25
 726            spinBoxController = (SpinBoxSettingsControlController)controller;
 727            spinBoxController.OnSetLabels += SetLabels;
 728            spinBoxController.OnCurrentLabelChange += SetOption;
 29
 730            base.Initialize(model, spinBoxController);
 731            spinBoxController.UpdateSetting(dropdown.value);
 32
 733            dropdown.onValueChanged.AddListener(spinBoxValue =>
 34            {
 035                ApplySetting(spinBoxValue);
 036            });
 37
 738            pointerClick.PointerClicked += spinBoxController.OnPointerClicked;
 739        }
 40
 41        private void SetOption(string option)
 42        {
 143            dropdown.captionText.text = option;
 144        }
 45        private void SetLabels(string[] labels)
 46        {
 947            if (labels.Length == 0)
 148                return;
 49
 850            dropdown.ClearOptions();
 3451            List<TMP_Dropdown.OptionData> dropdownOptions = labels.Select(l => new TMP_Dropdown.OptionData(l)).ToList();
 6852            foreach (TMP_Dropdown.OptionData data in dropdownOptions)
 53            {
 2654                dropdown.options.Add(data);
 55            }
 56
 857            dropdown.Hide();
 858            dropdown.RefreshShownValue();
 859        }
 60
 61        protected override void OnDestroy()
 62        {
 763            base.OnDestroy();
 764            pointerClick.PointerClicked -= spinBoxController.OnPointerClicked;
 65
 766            if (spinBoxController != null)
 67            {
 768                spinBoxController.OnSetLabels -= SetLabels;
 769                spinBoxController.OnCurrentLabelChange -= SetOption;
 70            }
 771        }
 72
 73        public override void RefreshControl()
 74        {
 775            base.RefreshControl();
 76
 777            int newValue = (int)spinBoxController.GetStoredValue();
 778            if (dropdown.value != newValue)
 579                dropdown.value = newValue;
 780        }
 81
 82    }
 83}