< Summary

Class:SectionProjectScenesController
Assembly:BuilderProjectsPanel
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/BuilderProjectsPanel/Scripts/SectionController/MenuSections/SectionProjectScenesController.cs
Covered lines:26
Uncovered lines:11
Coverable lines:37
Total lines:86
Line coverage:70.2% (26 of 37)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
SectionProjectScenesController(...)0%110100%
SectionProjectScenesController()0%2100%
SetViewContainer(...)0%2100%
Dispose()0%110100%
OnShow()0%2100%
OnHide()0%2100%
OnSetScenes(...)0%220100%
OnSceneAdded(...)0%2100%
OnSceneRemoved(...)0%2100%
OnSearchResult(...)0%550100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/BuilderProjectsPanel/Scripts/SectionController/MenuSections/SectionProjectScenesController.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Linq;
 4using UnityEngine;
 5using Object = UnityEngine.Object;
 6
 7internal class SectionProjectScenesController : SectionBase, IProjectSceneListener, ISectionHideContextMenuRequester
 8{
 9    public const string VIEW_PREFAB_PATH = "BuilderProjectsPanelMenuSections/SectionProjectScenesView";
 10
 11    public event Action OnRequestContextMenuHide;
 12
 113    public override ISectionSearchHandler searchHandler => sceneSearchHandler;
 14
 15    private readonly SectionProjectScenesView view;
 16
 117    private readonly ISectionSearchHandler sceneSearchHandler = new SectionSearchHandler();
 18    private Dictionary<string, ISceneCardView> scenesViews;
 19
 020    public SectionProjectScenesController() : this(
 21        Object.Instantiate(Resources.Load<SectionProjectScenesView>(VIEW_PREFAB_PATH))
 022    ) { }
 23
 124    public SectionProjectScenesController(SectionProjectScenesView view)
 25    {
 126        this.view = view;
 27
 128        view.OnScrollRectValueChanged += OnRequestContextMenuHide;
 129        sceneSearchHandler.OnResult += OnSearchResult;
 130    }
 31
 032    public override void SetViewContainer(Transform viewContainer) { view.SetParent(viewContainer); }
 33
 34    public override void Dispose()
 35    {
 136        view.OnScrollRectValueChanged -= OnRequestContextMenuHide;
 137        view.Dispose();
 138    }
 39
 040    protected override void OnShow() { view.SetActive(true); }
 41
 042    protected override void OnHide() { view.SetActive(false); }
 43
 44    void IProjectSceneListener.OnSetScenes(Dictionary<string, ISceneCardView> scenes)
 45    {
 146        scenesViews = new Dictionary<string, ISceneCardView>(scenes);
 1147        sceneSearchHandler.SetSearchableList(scenes.Values.Select(scene => scene.searchInfo).ToList());
 148    }
 49
 50    void IProjectSceneListener.OnSceneAdded(ISceneCardView scene)
 51    {
 052        scenesViews.Add(scene.sceneData.id, scene);
 053        sceneSearchHandler.AddItem(scene.searchInfo);
 054    }
 55
 56    void IProjectSceneListener.OnSceneRemoved(ISceneCardView scene)
 57    {
 058        scenesViews.Remove(scene.sceneData.id);
 059        scene.SetActive(false);
 060    }
 61
 62    private void OnSearchResult(List<ISearchInfo> searchInfoScenes)
 63    {
 264        if (scenesViews == null)
 165            return;
 66
 167        using (var iterator = scenesViews.GetEnumerator())
 68        {
 1169            while (iterator.MoveNext())
 70            {
 1071                iterator.Current.Value.SetParent(view.scenesCardContainer);
 1072                iterator.Current.Value.SetActive(false);
 73            }
 174        }
 75
 2276        for (int i = 0; i < searchInfoScenes.Count; i++)
 77        {
 1078            if (!scenesViews.TryGetValue(searchInfoScenes[i].id, out ISceneCardView cardView))
 79                continue;
 80
 1081            cardView.SetActive(true);
 1082            cardView.SetSiblingIndex(i);
 83        }
 184        view.ResetScrollRect();
 185    }
 86}