From 2310f2f7cedc9c882f12503b6ea99b1e237952b2 Mon Sep 17 00:00:00 2001 From: Sinai Date: Wed, 7 Apr 2021 17:20:42 +1000 Subject: [PATCH] Add "Default Tab" config setting instead of "last active tab" --- src/Core/Config/ConfigManager.cs | 38 +++++++++++++----------------- src/UI/Main/Home/HomePage.cs | 2 ++ src/UI/Main/MainMenu.cs | 23 +++++++++++------- src/UI/Main/Options/OptionsPage.cs | 1 + src/UI/Main/Search/SearchPage.cs | 1 + 5 files changed, 34 insertions(+), 31 deletions(-) diff --git a/src/Core/Config/ConfigManager.cs b/src/Core/Config/ConfigManager.cs index 5e5e287..8413fdc 100644 --- a/src/Core/Config/ConfigManager.cs +++ b/src/Core/Config/ConfigManager.cs @@ -17,18 +17,18 @@ namespace UnityExplorer.Core.Config // See the UnityExplorer.Loader namespace for the implementations. public static ConfigHandler Handler { get; private set; } - public static ConfigElement Main_Menu_Toggle; - public static ConfigElement Force_Unlock_Mouse; - public static ConfigElement Default_Page_Limit; - public static ConfigElement Default_Output_Path; - public static ConfigElement Log_Unity_Debug; - public static ConfigElement Hide_On_Startup; + public static ConfigElement Main_Menu_Toggle; + public static ConfigElement Force_Unlock_Mouse; + public static ConfigElement Default_Tab; + public static ConfigElement Default_Page_Limit; + public static ConfigElement Default_Output_Path; + public static ConfigElement Log_Unity_Debug; + public static ConfigElement Hide_On_Startup; - public static ConfigElement Last_Window_Anchors; - public static ConfigElement Last_Window_Position; - public static ConfigElement Last_Active_Tab; - public static ConfigElement Last_DebugConsole_State; - public static ConfigElement Last_SceneExplorer_State; + public static ConfigElement Last_Window_Anchors; + public static ConfigElement Last_Window_Position; + public static ConfigElement Last_DebugConsole_State; + public static ConfigElement Last_SceneExplorer_State; internal static readonly Dictionary ConfigElements = new Dictionary(); @@ -44,7 +44,6 @@ namespace UnityExplorer.Core.Config SceneExplorer.OnToggleShow += SceneExplorer_OnToggleShow; PanelDragger.OnFinishResize += PanelDragger_OnFinishResize; PanelDragger.OnFinishDrag += PanelDragger_OnFinishDrag; - MainMenu.OnActiveTabChanged += MainMenu_OnActiveTabChanged; DebugConsole.OnToggleShow += DebugConsole_OnToggleShow; InitConsoleCallback(); @@ -66,6 +65,10 @@ namespace UnityExplorer.Core.Config "Should UnityExplorer be hidden on startup?", false); + Default_Tab = new ConfigElement("Default Tab", + "The default menu page when starting the game.", + MenuPages.Home); + Log_Unity_Debug = new ConfigElement("Log Unity Debug", "Should UnityEngine.Debug.Log messages be printed to UnityExplorer's log?", false); @@ -94,11 +97,6 @@ namespace UnityExplorer.Core.Config DEFAULT_WINDOW_POSITION, true); - Last_Active_Tab = new ConfigElement("Last_Active_Tab", - "For internal use, the last active tab index.", - 0, - true); - Last_DebugConsole_State = new ConfigElement("Last_DebugConsole_State", "For internal use, the collapsed state of the Debug Console.", true, @@ -115,6 +113,7 @@ namespace UnityExplorer.Core.Config private static void PanelDragger_OnFinishResize(RectTransform rect) { Last_Window_Anchors.Value = rect.RectAnchorsToString(); + PanelDragger_OnFinishDrag(rect); } private static void PanelDragger_OnFinishDrag(RectTransform rect) @@ -122,11 +121,6 @@ namespace UnityExplorer.Core.Config Last_Window_Position.Value = rect.RectPositionToString(); } - private static void MainMenu_OnActiveTabChanged(int page) - { - Last_Active_Tab.Value = page; - } - private static void DebugConsole_OnToggleShow(bool showing) { Last_DebugConsole_State.Value = showing; diff --git a/src/UI/Main/Home/HomePage.cs b/src/UI/Main/Home/HomePage.cs index cfcfe6d..91a0eeb 100644 --- a/src/UI/Main/Home/HomePage.cs +++ b/src/UI/Main/Home/HomePage.cs @@ -13,6 +13,8 @@ namespace UnityExplorer.UI.Main.Home public static HomePage Instance { get; internal set; } + public override MenuPages Type => MenuPages.Home; + public override bool Init() { Instance = this; diff --git a/src/UI/Main/MainMenu.cs b/src/UI/Main/MainMenu.cs index 111d9a5..2c5ba36 100644 --- a/src/UI/Main/MainMenu.cs +++ b/src/UI/Main/MainMenu.cs @@ -26,7 +26,7 @@ namespace UnityExplorer.UI.Main public readonly List Pages = new List(); private BaseMenuPage m_activePage; - public static Action OnActiveTabChanged; + public static Action OnActiveTabChanged; // Navbar buttons private Button m_lastNavButtonPressed; @@ -38,8 +38,6 @@ namespace UnityExplorer.UI.Main internal bool pageLayoutInit; internal int layoutInitIndex; - private int origDesiredPage = -1; - public static void Create() { if (Instance != null) @@ -67,6 +65,7 @@ namespace UnityExplorer.UI.Main if (!page.Init()) { + page.WasDisabled = true; // page init failed. Pages.RemoveAt(i); i--; @@ -88,9 +87,6 @@ namespace UnityExplorer.UI.Main { if (!pageLayoutInit) { - if (origDesiredPage == -1) - origDesiredPage = ConfigManager.Last_Active_Tab?.Value ?? 0; - if (layoutInitIndex < Pages.Count) { SetPage(Pages[layoutInitIndex]); @@ -100,7 +96,8 @@ namespace UnityExplorer.UI.Main { pageLayoutInit = true; MainPanel.transform.position = initPos; - SetPage(Pages[origDesiredPage]); + + SetPage(ConfigManager.Default_Tab.Value); } return; } @@ -108,9 +105,17 @@ namespace UnityExplorer.UI.Main m_activePage?.Update(); } + public void SetPage(MenuPages page) + { + var pageObj = Pages.Find(it => it.Type == page); + if (pageObj == null || pageObj.WasDisabled) + return; + SetPage(pageObj); + } + public void SetPage(BaseMenuPage page) { - if (page == null || m_activePage == page) + if (page == null || m_activePage == page || page.WasDisabled) return; m_activePage?.Content?.SetActive(false); @@ -131,7 +136,7 @@ namespace UnityExplorer.UI.Main m_lastNavButtonPressed = button; - OnActiveTabChanged?.Invoke(Pages.IndexOf(m_activePage)); + OnActiveTabChanged?.Invoke(m_activePage.Type); } internal void SetButtonActiveColors(Button button) diff --git a/src/UI/Main/Options/OptionsPage.cs b/src/UI/Main/Options/OptionsPage.cs index 5fc0966..973685b 100644 --- a/src/UI/Main/Options/OptionsPage.cs +++ b/src/UI/Main/Options/OptionsPage.cs @@ -12,6 +12,7 @@ namespace UnityExplorer.UI.Main.Options public class OptionsPage : BaseMenuPage { public override string Name => "Options"; + public override MenuPages Type => MenuPages.Options; internal static readonly List _cachedConfigEntries = new List(); diff --git a/src/UI/Main/Search/SearchPage.cs b/src/UI/Main/Search/SearchPage.cs index e60a3fb..32e9c00 100644 --- a/src/UI/Main/Search/SearchPage.cs +++ b/src/UI/Main/Search/SearchPage.cs @@ -17,6 +17,7 @@ namespace UnityExplorer.UI.Main.Search public class SearchPage : BaseMenuPage { public override string Name => "Search"; + public override MenuPages Type => MenuPages.Search; public static SearchPage Instance;