< Summary

Class:DCL.SettingsPanelHUD.Controls.SliderSettingsControlView
Assembly:SettingsPanelHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/SettingsPanelHUD/Scripts/ControlsModule/SliderSettingsControlView.cs
Covered lines:27
Uncovered lines:8
Coverable lines:35
Total lines:96
Line coverage:77.1% (27 of 35)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Initialize(...)0%220100%
OnSliderValueChanged()0%110100%
OverrideSliderValue(...)0%2100%
OnDestroy()0%220100%
OverrideIndicatorLabel(...)0%110100%
RefreshControl()0%440100%
RemapSliderValueTo01(...)0%110100%
RemapNormalizedValueToSlider(...)0%110100%

File(s)

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

#LineLine coverage
 1using System;
 2using DCL.SettingsCommon.SettingsControllers.BaseControllers;
 3using TMPro;
 4using UnityEngine;
 5using UnityEngine.Events;
 6using UnityEngine.UI;
 7
 8namespace DCL.SettingsPanelHUD.Controls
 9{
 10    /// <summary>
 11    /// MonoBehaviour that represents the view of a SLIDER type CONTROL.
 12    /// </summary>
 13    public class SliderSettingsControlView : SettingsControlView
 14    {
 15        [SerializeField] private Slider slider;
 16        [SerializeField] private TextMeshProUGUI indicatorLabel;
 17
 18        private SliderControlModel sliderControlConfig;
 19        private SliderSettingsControlController sliderController;
 20
 21        public override void Initialize(SettingsControlModel model, SettingsControlController controller)
 22        {
 1723            sliderController = (SliderSettingsControlController)controller;
 1724            sliderController.OnIndicatorLabelChange += OverrideIndicatorLabel;
 1725            sliderController.SliderValueChanged += OverrideSliderValue;
 26
 1727            this.sliderControlConfig = (SliderControlModel)model;
 1728            slider.maxValue = this.sliderControlConfig.sliderMaxValue;
 1729            slider.minValue = this.sliderControlConfig.sliderMinValue;
 1730            slider.wholeNumbers = this.sliderControlConfig.wholeNumbers;
 31
 1732            base.Initialize(model, sliderController);
 1733            OverrideIndicatorLabel(slider.value.ToString());
 1734            sliderController.UpdateSetting(this.sliderControlConfig.storeValueAsNormalized ? RemapSliderValueTo01(slider
 35
 1736            slider.onValueChanged.AddListener(OnSliderValueChanged());
 1737        }
 38
 39        private UnityAction<float> OnSliderValueChanged()
 40        {
 3541            return sliderValue =>
 42            {
 43                // https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings
 44                // FX = floating point with X precision digits
 045                string stringFormat = sliderControlConfig.wholeNumbers ? "F0" : "F1";
 46
 047                OverrideIndicatorLabel(sliderValue.ToString(stringFormat));
 048                ApplySetting(this.sliderControlConfig.storeValueAsNormalized ? RemapSliderValueTo01(sliderValue) : slide
 049            };
 50        }
 51
 52        private void OverrideSliderValue(float newValue)
 53        {
 054            slider.onValueChanged.RemoveListener(OnSliderValueChanged());
 055            slider.value = newValue;
 056            slider.onValueChanged.AddListener(OnSliderValueChanged());
 057        }
 58
 59        protected override void OnDestroy()
 60        {
 1861            base.OnDestroy();
 62
 1863            slider.onValueChanged.RemoveListener(OnSliderValueChanged());
 64
 1865            if (sliderController != null)
 1766                sliderController.OnIndicatorLabelChange -= OverrideIndicatorLabel;
 1867        }
 68
 69        /// <summary>
 70        /// Overrides the text of the label associated to the slider.
 71        /// </summary>
 72        /// <param name="text">New label text.</param>
 73        public void OverrideIndicatorLabel(string text) =>
 2374            indicatorLabel.text = text;
 75
 76        public override void RefreshControl()
 77        {
 1778            base.RefreshControl();
 79
 1780            var storedValue = Convert.ToSingle(sliderController.GetStoredValue());
 81
 1782            float newValue = sliderControlConfig.storeValueAsNormalized ? RemapNormalizedValueToSlider(storedValue) : st
 83
 1784            if (slider.value != newValue)
 1585                slider.value = newValue;
 1786        }
 87
 88        private float RemapSliderValueTo01(float value) =>
 189            ((value - slider.minValue)
 90             / (slider.maxValue - slider.minValue)
 91             * (1 - 0)) + 0; //(value - from1) / (to1 - from1) * (to2 - from2) + from2
 92
 93        private float RemapNormalizedValueToSlider(float value) =>
 194            Mathf.Lerp(slider.minValue, slider.maxValue, value);
 95    }
 96}