From 13da0082419e389a5dbffa0e31c8aabf4802c396 Mon Sep 17 00:00:00 2001 From: Michael Becker Date: Tue, 13 Sep 2022 09:42:16 -0400 Subject: [PATCH] allow searching for setting by ID instead of name - names are deprecated --- MBS.Framework/Settings/GroupSetting.cs | 17 +++++++++++++ MBS.Framework/SettingsProvider.cs | 35 ++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/MBS.Framework/Settings/GroupSetting.cs b/MBS.Framework/Settings/GroupSetting.cs index de962f3..f642bff 100644 --- a/MBS.Framework/Settings/GroupSetting.cs +++ b/MBS.Framework/Settings/GroupSetting.cs @@ -69,6 +69,23 @@ namespace MBS.Framework.Settings } return null; } + public Setting FindSetting(Guid id) + { + foreach (Setting s in Options) + { + if (s is GroupSetting) + { + Setting r = (s as GroupSetting).FindSetting(id); + if (r != null) return r; + } + else + { + if (s.ID == id) + return s; + } + } + return null; + } public override object Clone() { diff --git a/MBS.Framework/SettingsProvider.cs b/MBS.Framework/SettingsProvider.cs index bab9a5b..dfe1cea 100644 --- a/MBS.Framework/SettingsProvider.cs +++ b/MBS.Framework/SettingsProvider.cs @@ -74,6 +74,26 @@ namespace MBS.Framework } return null; } + public Setting FindSetting(Guid id) + { + foreach (SettingsGroup sg in SettingsGroups) + { + foreach (Setting s in sg.Settings) + { + if (s is GroupSetting) + { + Setting r = (s as GroupSetting).FindSetting(id); + if (r != null) return r; + } + else + { + if (s.ID == id) + return s; + } + } + } + return null; + } protected virtual void InitializeInternal() { @@ -119,5 +139,20 @@ namespace MBS.Framework other.SettingsGroups.Add(group.Clone() as SettingsGroup); } } + + public SettingsProvider Clone(string settingsGroupsPrefix) + { + CustomSettingsProvider prov = new CustomSettingsProvider(); + foreach (SettingsGroup sg in this.SettingsGroups) + { + SettingsGroup sg2 = sg.Clone() as SettingsGroup; + string[] szpath = new string[sg.Path.Length + 1]; + Array.Copy(sg.Path, 0, szpath, 1, sg.Path.Length); + szpath[0] = settingsGroupsPrefix; + sg2.Path = szpath; + prov.SettingsGroups.Add(sg2); + } + return prov; + } } }