< Summary

Class:DCL.Builder.BuilderMainPanelView
Assembly:BuilderProjectsPanel
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/HUD/ProjectsPanelHUD/Scripts/Views/BuilderMainPanelView.cs
Covered lines:49
Uncovered lines:30
Coverable lines:79
Total lines:232
Line coverage:62% (49 of 79)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
SetSearchViewVisible(...)0%2100%
IsVisible()0%110100%
SetVisible(...)0%330100%
SetTogglOnWithoutNotify(...)0%220100%
SetMainLeftPanel()0%110100%
SetProjectSettingsLeftPanel()0%110100%
GetProjectCardView()0%2100%
GetSceneCardViewPrefab()0%110100%
GetSectionContainer()0%2100%
GetTransform()0%2100%
GetSearchBar()0%110100%
GetSettingsViewReferences()0%110100%
GetSceneCardViewContextMenu()0%110100%
GetProjectCardViewContextMenu()0%2100%
GetUnpublishPopup()0%110100%
Dispose()0%220100%
Awake()0%330100%
OnDestroy()0%110100%
SetGuestMode(...)0%5.674052.94%
ShowToast(...)0%2100%
CloseTriggerOnOnTriggered(...)0%2.52050%
SetScenes(...)0%2100%
SceneAdded(...)0%2100%
SceneRemoved(...)0%2100%
OnSetProjects(...)0%2100%
OnProjectAdded(...)0%2100%
OnProjectRemoved(...)0%2100%
SetAsFullScreenMenuMode(...)0%4.312016.67%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/DCLPlugins/BuilderInWorld/HUD/ProjectsPanelHUD/Scripts/Views/BuilderMainPanelView.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using UnityEngine;
 4using UnityEngine.UI;
 5using DCL.Builder;
 6
 7namespace DCL.Builder
 8{
 9    internal interface IBuilderMainPanelView : IDisposable
 10    {
 11        event Action OnGuestConnectWallet;
 12        event Action OnBackToMainMenuPressed;
 13        event Action OnClosePressed;
 14        event Action OnBackPressed;
 15        event Action OnCreateProjectPressed;
 16        void SetVisible(bool visible);
 17        void SetSearchViewVisible(bool visible);
 18        bool IsVisible();
 19        void SetTogglOnWithoutNotify(SectionId sectionId);
 20        void SetMainLeftPanel();
 21        void SetProjectSettingsLeftPanel();
 22        void ShowToast(string text);
 23        SceneCardView GetSceneCardViewPrefab();
 24        ProjectCardView GetProjectCardView();
 25        Transform GetSectionContainer();
 26        Transform GetTransform();
 27        SearchBarView GetSearchBar();
 28        LeftMenuSettingsViewReferences GetSettingsViewReferences();
 29        SceneCardViewContextMenu GetSceneCardViewContextMenu();
 30        ProjectContextMenuView GetProjectCardViewContextMenu();
 31        IUnpublishPopupView GetUnpublishPopup();
 32        void SetAsFullScreenMenuMode(Transform parentTransform);
 33        void SetGuestMode(bool active);
 34    }
 35
 36    internal class BuilderMainPanelView : MonoBehaviour, IBuilderMainPanelView, ISceneListener, IProjectsListener
 37    {
 38        [Header("General")]
 39        [SerializeField] internal Button closeButton;
 40        [SerializeField] internal Button backgroundButton;
 41        [SerializeField] internal Transform sectionsContainer;
 42        [SerializeField] internal SceneCardViewContextMenu contextMenu;
 43        [SerializeField] internal ProjectContextMenuView projectContextMenu;
 44        [SerializeField] internal SearchBarView searchBarView;
 45        [SerializeField] internal ShowHideAnimator showHideAnimator;
 46        [SerializeField] internal InputAction_Trigger closeTrigger;
 47        [SerializeField] internal GameObject guestModeGameObject;
 48        [SerializeField] internal GameObject sectionGameObject;
 49        [SerializeField] internal Toast toastView;
 50
 51        [Header("Left-Panel Section Buttons")]
 52        [SerializeField] internal LeftMenuButtonToggleView[] sectionToggles;
 53
 54        [Header("Left-Panel")]
 55        [SerializeField] internal GameObject leftPanelMain;
 56        [SerializeField] internal GameObject leftPanelProjectSettings;
 57        [SerializeField] internal Button createSceneButton;
 58        [SerializeField] internal Button importSceneButton;
 59        [SerializeField] internal Button backToMainPanelButton;
 60        [SerializeField] internal Button connectWalletButton;
 61        [SerializeField] internal LeftMenuSettingsViewReferences settingsViewReferences;
 62
 63        [Header("Assets")]
 64        [SerializeField] internal SceneCardView sceneCardViewPrefab;
 65        [SerializeField] internal ProjectCardView projectCardView;
 66
 67        [Header("Popups")]
 68        [SerializeField] internal UnpublishPopupView unpublishPopupView;
 69
 70        public event Action OnGuestConnectWallet;
 71        public event Action OnClosePressed;
 72        public event Action OnBackPressed;
 73        public event Action OnCreateProjectPressed;
 74        public event Action OnImportScenePressed;
 75        public event Action OnBackToMainMenuPressed;
 76
 77        private int scenesCount = 0;
 78        private int projectScenesCount = 0;
 79        private bool isDestroyed = false;
 80
 081        public void SetSearchViewVisible(bool visible) => searchBarView.gameObject.SetActive(visible);
 82
 183        public bool IsVisible() { return gameObject.activeSelf; }
 84
 85        void IBuilderMainPanelView.SetVisible(bool visible)
 86        {
 787            if (visible)
 88            {
 489                if (!gameObject.activeSelf)
 90                {
 491                    gameObject.SetActive(true);
 92                }
 493                showHideAnimator.Show();
 494            }
 95            else
 96            {
 397                showHideAnimator.Hide();
 98            }
 399        }
 100
 101        void IBuilderMainPanelView.SetTogglOnWithoutNotify(SectionId sectionId)
 102        {
 32103            for (int i = 0; i < sectionToggles.Length; i++)
 104            {
 14105                sectionToggles[i].SetIsOnWithoutNotify(sectionId == sectionToggles[i].openSection);
 106            }
 2107        }
 108
 109        void IBuilderMainPanelView.SetMainLeftPanel()
 110        {
 1111            leftPanelMain.SetActive(true);
 1112            leftPanelProjectSettings.SetActive(false);
 1113        }
 114
 115        void IBuilderMainPanelView.SetProjectSettingsLeftPanel()
 116        {
 1117            leftPanelMain.SetActive(false);
 1118            leftPanelProjectSettings.SetActive(true);
 1119        }
 120
 0121        ProjectCardView IBuilderMainPanelView.GetProjectCardView() { return projectCardView; }
 122
 2123        SceneCardView IBuilderMainPanelView.GetSceneCardViewPrefab() { return sceneCardViewPrefab; }
 124
 0125        Transform IBuilderMainPanelView.GetSectionContainer() { return sectionsContainer; }
 126
 0127        Transform IBuilderMainPanelView.GetTransform() { return transform; }
 128
 16129        SearchBarView IBuilderMainPanelView.GetSearchBar() { return  searchBarView; }
 130
 17131        LeftMenuSettingsViewReferences IBuilderMainPanelView.GetSettingsViewReferences() { return settingsViewReferences
 132
 17133        SceneCardViewContextMenu IBuilderMainPanelView.GetSceneCardViewContextMenu() { return contextMenu; }
 0134        public ProjectContextMenuView GetProjectCardViewContextMenu() { return projectContextMenu; }
 135
 16136        IUnpublishPopupView IBuilderMainPanelView.GetUnpublishPopup() { return unpublishPopupView; }
 137
 138        public void Dispose()
 139        {
 16140            if (!isDestroyed)
 141            {
 16142                Destroy(gameObject);
 143            }
 16144        }
 145
 146        private void Awake()
 147        {
 16148            name = "_BuilderProjectsPanel";
 149
 17150            closeButton.onClick.AddListener(() => OnClosePressed?.Invoke());
 16151            backgroundButton?.onClick.AddListener(() => OnClosePressed?.Invoke());
 16152            createSceneButton.onClick.AddListener(() => OnCreateProjectPressed?.Invoke());
 16153            importSceneButton.onClick.AddListener(() => OnImportScenePressed?.Invoke());
 17154            backToMainPanelButton.onClick.AddListener(() => OnBackToMainMenuPressed?.Invoke());
 16155            connectWalletButton.onClick.AddListener(() => OnGuestConnectWallet?.Invoke());
 16156            closeTrigger.OnTriggered += CloseTriggerOnOnTriggered;
 157
 16158            contextMenu.Hide();
 16159            gameObject.SetActive(false);
 160
 256161            for (int i = 0; i < sectionToggles.Length; i++)
 162            {
 112163                sectionToggles[i].Setup();
 164            }
 16165        }
 166
 32167        private void OnDestroy() { isDestroyed = true; }
 168
 169        public void SetGuestMode(bool active)
 170        {
 13171            if (active)
 172            {
 0173                guestModeGameObject.SetActive(true);
 0174                sectionGameObject.SetActive(false);
 0175                createSceneButton.interactable = false;
 176
 0177                for (int i = 0; i < sectionToggles.Length; i++)
 178                {
 0179                    sectionToggles[i].Disable();
 180                }
 0181            }
 182            else
 183            {
 13184                guestModeGameObject.SetActive(false);
 13185                sectionGameObject.SetActive(true);
 13186                createSceneButton.interactable = true;
 187
 208188                for (int i = 0; i < sectionToggles.Length; i++)
 189                {
 91190                    sectionToggles[i].Enable();
 191                }
 192            }
 13193        }
 194
 195        public void ShowToast(string text)
 196        {
 0197            toastView.SetText(text);
 0198            toastView.Show(false);
 0199        }
 200
 16201        private void CloseTriggerOnOnTriggered(DCLAction_Trigger action) { OnBackPressed?.Invoke(); }
 202
 0203        void ISceneListener.SetScenes(Dictionary<string, ISceneCardView> scenes) { scenesCount = scenes.Count; }
 204
 0205        void ISceneListener.SceneAdded(ISceneCardView scene) { scenesCount++; }
 206
 0207        void ISceneListener.SceneRemoved(ISceneCardView scene) { scenesCount--; }
 208
 0209        public void OnSetProjects(Dictionary<string, IProjectCardView> projects) { projectScenesCount = projects.Count; 
 210
 0211        public void OnProjectAdded(IProjectCardView project) { projectScenesCount++; }
 212
 0213        public void OnProjectRemoved(IProjectCardView project) { projectScenesCount--; }
 214
 215        public void SetAsFullScreenMenuMode(Transform parentTransform)
 216        {
 16217            if (parentTransform == null)
 16218                return;
 219
 0220            transform.SetParent(parentTransform);
 0221            transform.localScale = Vector3.one;
 222
 0223            RectTransform rectTransform = transform as RectTransform;
 0224            rectTransform.anchorMin = Vector2.zero;
 0225            rectTransform.anchorMax = Vector2.one;
 0226            rectTransform.pivot = new Vector2(0.5f, 0.5f);
 0227            rectTransform.localPosition = Vector2.zero;
 0228            rectTransform.offsetMax = Vector2.zero;
 0229            rectTransform.offsetMin = Vector2.zero;
 0230        }
 231    }
 232}