< Summary

Class:DCL.SettingsPanelHUD.Sections.SettingsSectionView
Assembly:SettingsPanelHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/SettingsPanelHUD/Scripts/SectionsModule/SettingsSectionView.cs
Covered lines:15
Uncovered lines:0
Coverable lines:15
Total lines:68
Line coverage:100% (15 of 15)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Initialize(...)0%110100%
SetActive(...)0%220100%
CreateWidgets()0%220100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/SettingsPanelHUD/Scripts/SectionsModule/SettingsSectionView.cs

#LineLine coverage
 1using DCL.SettingsPanelHUD.Widgets;
 2using System.Collections.Generic;
 3using UnityEngine;
 4using UnityEngine.UI;
 5
 6namespace DCL.SettingsPanelHUD.Sections
 7{
 8    /// <summary>
 9    /// Interface to implement a view for a SECTION.
 10    /// </summary>
 11    public interface ISettingsSectionView
 12    {
 13        /// <summary>
 14        /// All the needed logic to initializes the SECTION view and put its WIDGETS factory into operation.
 15        /// </summary>
 16        /// <param name="settingsSectionController">Controller that will be associated to this view.</param>
 17        /// <param name="widgets">List of WIDGETS associated to this SECTION.</param>
 18        void Initialize(ISettingsSectionController settingsSectionController, List<SettingsWidgetModel> widgets);
 19
 20        /// <summary>
 21        /// Activates/deactivates the SECTION.
 22        /// </summary>
 23        /// <param name="active">True for SECTION activation.</param>
 24        void SetActive(bool active);
 25    }
 26
 27    /// <summary>
 28    /// MonoBehaviour that represents a SECTION view and will act as a factory of WIDGETS.
 29    /// </summary>
 30    public class SettingsSectionView : MonoBehaviour, ISettingsSectionView
 31    {
 32        [SerializeField] private Transform widgetsContainer;
 33        [SerializeField] private ScrollRect scrollRect;
 34
 35        private ISettingsSectionController settingsSectionController;
 36        private List<SettingsWidgetModel> widgets;
 37        private bool isOpen = false;
 38
 39        public void Initialize(ISettingsSectionController settingsSectionController, List<SettingsWidgetModel> widgets)
 40        {
 441            this.settingsSectionController = settingsSectionController;
 442            this.widgets = widgets;
 43
 444            CreateWidgets();
 445        }
 46
 47        public void SetActive(bool active)
 48        {
 949            gameObject.SetActive(active);
 50
 951            if (!isOpen && active)
 152                scrollRect.verticalNormalizedPosition = 1f;
 53
 954            isOpen = active;
 955        }
 56
 57        private void CreateWidgets()
 58        {
 1859            foreach (SettingsWidgetModel widgetConfig in widgets)
 60            {
 561                var newWidget = Instantiate(widgetConfig.widgetPrefab, widgetsContainer);
 562                newWidget.gameObject.name = $"Widget_{widgetConfig.title}";
 563                var newWidgetController = Instantiate(widgetConfig.widgetController);
 564                settingsSectionController.AddWidget(newWidget, newWidgetController, widgetConfig);
 65            }
 466        }
 67    }
 68}