< 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
Covered methods:6
Total methods:6
Method coverage:100% (6 of 6)

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        {
 818            pointerClick = dropdown.GetComponent<PointerClickEventInterceptor>();
 819        }
 20
 21        public override void Initialize(SettingsControlModel model, SettingsControlController controller)
 22        {
 23            // we use spinbox control model and control controller for compatibility
 824            SetLabels(((SpinBoxControlModel)model).spinBoxLabels);
 25
 826            spinBoxController = (SpinBoxSettingsControlController)controller;
 827            spinBoxController.OnSetLabels += SetLabels;
 828            spinBoxController.OnCurrentLabelChange += SetOption;
 29
 830            base.Initialize(model, spinBoxController);
 831            spinBoxController.UpdateSetting(dropdown.value);
 32
 833            dropdown.onValueChanged.AddListener(spinBoxValue =>
 34            {
 035                ApplySetting(spinBoxValue);
 036            });
 37
 838            pointerClick.PointerClicked += spinBoxController.OnPointerClicked;
 839        }
 40
 41        private void SetOption(string option)
 42        {
 143            dropdown.captionText.text = option;
 144        }
 45        private void SetLabels(string[] labels)
 46        {
 1047            if (labels.Length == 0)
 148                return;
 49
 950            dropdown.ClearOptions();
 3851            List<TMP_Dropdown.OptionData> dropdownOptions = labels.Select(l => new TMP_Dropdown.OptionData(l)).ToList();
 7652            foreach (TMP_Dropdown.OptionData data in dropdownOptions)
 53            {
 2954                dropdown.options.Add(data);
 55            }
 56
 957            dropdown.Hide();
 958            dropdown.RefreshShownValue();
 959        }
 60
 61        protected override void OnDestroy()
 62        {
 863            base.OnDestroy();
 864            pointerClick.PointerClicked -= spinBoxController.OnPointerClicked;
 65
 866            if (spinBoxController != null)
 67            {
 868                spinBoxController.OnSetLabels -= SetLabels;
 869                spinBoxController.OnCurrentLabelChange -= SetOption;
 70            }
 871        }
 72
 73        public override void RefreshControl()
 74        {
 875            base.RefreshControl();
 76
 877            int newValue = (int)spinBoxController.GetStoredValue();
 878            if (dropdown.value != newValue)
 379                dropdown.value = newValue;
 880        }
 81
 82    }
 83}