From b7b9defaa6f8d861841cb134dfbb3ef161c24bda Mon Sep 17 00:00:00 2001 From: Ottermandias Date: Mon, 17 Feb 2025 17:38:42 +0100 Subject: [PATCH] Add context menu to clear temporary settings. --- Penumbra/Api/Api/TemporaryApi.cs | 14 +++----------- Penumbra/Collections/Manager/CollectionEditor.cs | 14 ++++++++++++++ Penumbra/UI/ModsTab/ModFileSystemSelector.cs | 9 ++++++++- 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/Penumbra/Api/Api/TemporaryApi.cs b/Penumbra/Api/Api/TemporaryApi.cs index d951639c..a997ded8 100644 --- a/Penumbra/Api/Api/TemporaryApi.cs +++ b/Penumbra/Api/Api/TemporaryApi.cs @@ -130,8 +130,8 @@ public class TemporaryApi( return ApiHelpers.Return(ret, args); } - public (PenumbraApiEc, (bool, bool, int, Dictionary>)?, string) QueryTemporaryModSettings(Guid collectionId, string modDirectory, - string modName, int key) + public (PenumbraApiEc, (bool, bool, int, Dictionary>)?, string) QueryTemporaryModSettings(Guid collectionId, + string modDirectory, string modName, int key) { var args = ApiHelpers.Args("CollectionId", collectionId, "ModDirectory", modDirectory, "ModName", modName); if (!collectionManager.Storage.ById(collectionId, out var collection)) @@ -296,15 +296,7 @@ public class TemporaryApi( if (collection.Identity.Index <= 0) return ApiHelpers.Return(PenumbraApiEc.NothingChanged, args); - var numRemoved = 0; - for (var i = 0; i < collection.Settings.Count; ++i) - { - if (collection.GetTempSettings(i) is { } tempSettings - && tempSettings.Lock == key - && collectionManager.Editor.SetTemporarySettings(collection, modManager[i], null, key)) - ++numRemoved; - } - + var numRemoved = collectionManager.Editor.ClearTemporarySettings(collection, key); return ApiHelpers.Return(numRemoved > 0 ? PenumbraApiEc.Success : PenumbraApiEc.NothingChanged, args); } diff --git a/Penumbra/Collections/Manager/CollectionEditor.cs b/Penumbra/Collections/Manager/CollectionEditor.cs index f4902fda..5ccc38e2 100644 --- a/Penumbra/Collections/Manager/CollectionEditor.cs +++ b/Penumbra/Collections/Manager/CollectionEditor.cs @@ -114,6 +114,20 @@ public class CollectionEditor(SaveService saveService, CommunicatorService commu return true; } + public int ClearTemporarySettings(ModCollection collection, int key = 0) + { + var numRemoved = 0; + for (var i = 0; i < collection.Settings.Count; ++i) + { + if (collection.GetTempSettings(i) is { } tempSettings + && tempSettings.Lock == key + && SetTemporarySettings(collection, modStorage[i], null, key)) + ++numRemoved; + } + + return numRemoved; + } + public bool CanSetTemporarySettings(ModCollection collection, Mod mod, int key) { var old = collection.GetTempSettings(mod.Index); diff --git a/Penumbra/UI/ModsTab/ModFileSystemSelector.cs b/Penumbra/UI/ModsTab/ModFileSystemSelector.cs index 1a7d4e31..0a68c077 100644 --- a/Penumbra/UI/ModsTab/ModFileSystemSelector.cs +++ b/Penumbra/UI/ModsTab/ModFileSystemSelector.cs @@ -64,6 +64,7 @@ public sealed class ModFileSystemSelector : FileSystemSelector QuickMove(l, _config.QuickMoveFolder1, _config.QuickMoveFolder2, _config.QuickMoveFolder3)); + SubscribeRightClickMain(ClearTemporarySettings, 105); SubscribeRightClickMain(ClearDefaultImportFolder, 100); SubscribeRightClickMain(() => ClearQuickMove(0, _config.QuickMoveFolder1, () => {_config.QuickMoveFolder1 = string.Empty; _config.Save();}), 110); SubscribeRightClickMain(() => ClearQuickMove(1, _config.QuickMoveFolder2, () => {_config.QuickMoveFolder2 = string.Empty; _config.Save();}), 120); @@ -237,10 +238,16 @@ public sealed class ModFileSystemSelector : FileSystemSelector