< 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:0
Uncovered lines:79
Coverable lines:79
Total lines:232
Line coverage:0% (0 of 79)
Covered branches:0
Total branches:0

Metrics

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

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
 083        public bool IsVisible() { return gameObject.activeSelf; }
 84
 85        void IBuilderMainPanelView.SetVisible(bool visible)
 86        {
 087            if (visible)
 88            {
 089                if (!gameObject.activeSelf)
 90                {
 091                    gameObject.SetActive(true);
 92                }
 093                showHideAnimator.Show();
 094            }
 95            else
 96            {
 097                showHideAnimator.Hide();
 98            }
 099        }
 100
 101        void IBuilderMainPanelView.SetTogglOnWithoutNotify(SectionId sectionId)
 102        {
 0103            for (int i = 0; i < sectionToggles.Length; i++)
 104            {
 0105                sectionToggles[i].SetIsOnWithoutNotify(sectionId == sectionToggles[i].openSection);
 106            }
 0107        }
 108
 109        void IBuilderMainPanelView.SetMainLeftPanel()
 110        {
 0111            leftPanelMain.SetActive(true);
 0112            leftPanelProjectSettings.SetActive(false);
 0113        }
 114
 115        void IBuilderMainPanelView.SetProjectSettingsLeftPanel()
 116        {
 0117            leftPanelMain.SetActive(false);
 0118            leftPanelProjectSettings.SetActive(true);
 0119        }
 120
 0121        ProjectCardView IBuilderMainPanelView.GetProjectCardView() { return projectCardView; }
 122
 0123        SceneCardView IBuilderMainPanelView.GetSceneCardViewPrefab() { return sceneCardViewPrefab; }
 124
 0125        Transform IBuilderMainPanelView.GetSectionContainer() { return sectionsContainer; }
 126
 0127        Transform IBuilderMainPanelView.GetTransform() { return transform; }
 128
 0129        SearchBarView IBuilderMainPanelView.GetSearchBar() { return  searchBarView; }
 130
 0131        LeftMenuSettingsViewReferences IBuilderMainPanelView.GetSettingsViewReferences() { return settingsViewReferences
 132
 0133        SceneCardViewContextMenu IBuilderMainPanelView.GetSceneCardViewContextMenu() { return contextMenu; }
 0134        public ProjectContextMenuView GetProjectCardViewContextMenu() { return projectContextMenu; }
 135
 0136        IUnpublishPopupView IBuilderMainPanelView.GetUnpublishPopup() { return unpublishPopupView; }
 137
 138        public void Dispose()
 139        {
 0140            if (!isDestroyed)
 141            {
 0142                Destroy(gameObject);
 143            }
 0144        }
 145
 146        private void Awake()
 147        {
 0148            name = "_BuilderProjectsPanel";
 149
 0150            closeButton.onClick.AddListener(() => OnClosePressed?.Invoke());
 0151            backgroundButton?.onClick.AddListener(() => OnClosePressed?.Invoke());
 0152            createSceneButton.onClick.AddListener(() => OnCreateProjectPressed?.Invoke());
 0153            importSceneButton.onClick.AddListener(() => OnImportScenePressed?.Invoke());
 0154            backToMainPanelButton.onClick.AddListener(() => OnBackToMainMenuPressed?.Invoke());
 0155            connectWalletButton.onClick.AddListener(() => OnGuestConnectWallet?.Invoke());
 0156            closeTrigger.OnTriggered += CloseTriggerOnOnTriggered;
 157
 0158            contextMenu.Hide();
 0159            gameObject.SetActive(false);
 160
 0161            for (int i = 0; i < sectionToggles.Length; i++)
 162            {
 0163                sectionToggles[i].Setup();
 164            }
 0165        }
 166
 0167        private void OnDestroy() { isDestroyed = true; }
 168
 169        public void SetGuestMode(bool active)
 170        {
 0171            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            {
 0184                guestModeGameObject.SetActive(false);
 0185                sectionGameObject.SetActive(true);
 0186                createSceneButton.interactable = true;
 187
 0188                for (int i = 0; i < sectionToggles.Length; i++)
 189                {
 0190                    sectionToggles[i].Enable();
 191                }
 192            }
 0193        }
 194
 195        public void ShowToast(string text)
 196        {
 0197            toastView.SetText(text);
 0198            toastView.Show(false);
 0199        }
 200
 0201        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        {
 0217            if (parentTransform == null)
 0218                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}