Move to INotificationManager

This commit is contained in:
Asriel Camora
2024-03-22 23:27:17 -07:00
parent 0c658a72c3
commit 9b58aa3b0e
5 changed files with 63 additions and 12 deletions
+10
View File
@@ -5,6 +5,7 @@ using Craftimizer.Simulator.Actions;
using Craftimizer.Utils; using Craftimizer.Utils;
using Craftimizer.Windows; using Craftimizer.Windows;
using Dalamud.Game.Command; using Dalamud.Game.Command;
using Dalamud.Interface.ImGuiNotification;
using Dalamud.Interface.Internal; using Dalamud.Interface.Internal;
using Dalamud.Interface.Windowing; using Dalamud.Interface.Windowing;
using Dalamud.IoC; using Dalamud.IoC;
@@ -163,6 +164,15 @@ public sealed class Plugin : IDalamudPlugin
public void CopyMacro(IReadOnlyList<ActionType> actions) => public void CopyMacro(IReadOnlyList<ActionType> actions) =>
MacroCopy.Copy(actions); MacroCopy.Copy(actions);
public IActiveNotification DisplayNotification(Notification notification)
{
notification.InitialDuration = TimeSpan.FromSeconds(5);
var ret = Service.NotificationManager.AddNotification(notification);
if (notification.Icon != null)
ret.SetIconTexture(Icon);
return ret;
}
public void Dispose() public void Dispose()
{ {
Service.CommandManager.RemoveHandler("/craftimizer"); Service.CommandManager.RemoveHandler("/craftimizer");
+1
View File
@@ -24,6 +24,7 @@ public sealed class Service
[PluginService] public static IFramework Framework { get; private set; } [PluginService] public static IFramework Framework { get; private set; }
[PluginService] public static IPluginLog PluginLog { get; private set; } [PluginService] public static IPluginLog PluginLog { get; private set; }
[PluginService] public static IGameInteropProvider GameInteropProvider { get; private set; } [PluginService] public static IGameInteropProvider GameInteropProvider { get; private set; }
[PluginService] public static INotificationManager NotificationManager { get; private set; }
public static Plugin Plugin { get; private set; } public static Plugin Plugin { get; private set; }
public static Configuration Configuration => Plugin.Configuration; public static Configuration Configuration => Plugin.Configuration;
+31 -8
View File
@@ -20,7 +20,13 @@ public static class MacroCopy
{ {
if (actions.Count == 0) if (actions.Count == 0)
{ {
Service.PluginInterface.UiBuilder.AddNotification("Could not copy macro. It's empty!", "Craftimizer Macro Not Copied", NotificationType.Error); Service.Plugin.DisplayNotification(new()
{
Content = "Cannot copy an empty macro.",
MinimizedText = "Cannot copy empty macro",
Title = "Macro Not Copied",
Type = NotificationType.Error
});
return; return;
} }
@@ -29,9 +35,8 @@ public static class MacroCopy
var s = new List<string>(); var s = new List<string>();
for (var i = 0; i < actions.Count; ++i) for (var i = 0; i < actions.Count; ++i)
{ {
if (s.Count == 0) if (config.UseMacroLock && s.Count == 0)
{ {
if (config.UseMacroLock)
s.Add("/mlock"); s.Add("/mlock");
} }
@@ -73,7 +78,7 @@ public static class MacroCopy
CopyToMacro(macros, config); CopyToMacro(macros, config);
break; break;
case MacroCopyConfiguration.CopyType.CopyToClipboard: case MacroCopyConfiguration.CopyType.CopyToClipboard:
CopyToClipboard(macros, config); CopyToClipboard(macros);
break; break;
} }
} }
@@ -128,12 +133,24 @@ public static class MacroCopy
i++, macroIdx += config.CopyDown ? 10 : 1) i++, macroIdx += config.CopyDown ? 10 : 1)
SetMacro(macroIdx, config.SharedMacro, macros[i]); SetMacro(macroIdx, config.SharedMacro, macros[i]);
Service.PluginInterface.UiBuilder.AddNotification(i > 1 ? "Copied macro to User Macros." : $"Copied {i} macros to User Macros.", "Craftimizer Macro Copied", NotificationType.Success); Service.Plugin.DisplayNotification(new()
{
Content = i > 1 ? "Copied macro to User Macros." : $"Copied {i} macros to User Macros.",
MinimizedText = i > 1 ? "Copied macro" : $"Copied {i} macros",
Title = "Macro Copied",
Type = NotificationType.Success
});
if (i < macros.Count) if (i < macros.Count)
{ {
Service.Plugin.OpenMacroClipboard(macros); Service.Plugin.OpenMacroClipboard(macros);
var rest = macros.Count - i; var rest = macros.Count - i;
Service.PluginInterface.UiBuilder.AddNotification($"Couldn't copy {rest} macro{(rest == 1 ? "" : "s")}, so a window was opened with all of them.", "Craftimizer Macro Copied", NotificationType.Info); Service.Plugin.DisplayNotification(new()
{
Content = $"Couldn't copy {rest} macro{(rest == 1 ? "" : "s")}, so a window was opened with all of them.",
Minimized = false,
Title = "Macro Copied",
Type = NotificationType.Warning
});
} }
} }
@@ -150,9 +167,15 @@ public static class MacroCopy
IMemorySpace.Free(text); IMemorySpace.Free(text);
} }
private static void CopyToClipboard(List<string> macros, MacroCopyConfiguration config) private static void CopyToClipboard(List<string> macros)
{ {
ImGui.SetClipboardText(string.Join(Environment.NewLine + Environment.NewLine, macros)); ImGui.SetClipboardText(string.Join(Environment.NewLine + Environment.NewLine, macros));
Service.PluginInterface.UiBuilder.AddNotification(macros.Count > 1 ? "Copied macro to clipboard." : $"Copied {macros.Count} macros to clipboard.", "Craftimizer Macro Copied", NotificationType.Success); Service.Plugin.DisplayNotification(new()
{
Content = macros.Count > 1 ? "Copied macro to clipboard." : $"Copied {macros.Count} macros to clipboard.",
MinimizedText = macros.Count > 1 ? "Copied macro" : $"Copied {macros.Count} macros",
Title = "Macro Copied",
Type = NotificationType.Success
});
} }
} }
+7 -1
View File
@@ -53,7 +53,13 @@ public sealed class MacroClipboard : Window, IDisposable
if (buttonClicked) if (buttonClicked)
{ {
ImGui.SetClipboardText(macro); ImGui.SetClipboardText(macro);
Service.PluginInterface.UiBuilder.AddNotification($"Macro {idx + 1} copied to clipboard.", "Craftimizer Macro Copied", NotificationType.Success); Service.Plugin.DisplayNotification(new()
{
Content = $"Macro {idx + 1} copied to clipboard.",
MinimizedText = $"Copied macro {idx + 1}",
Title = "Macro Copied",
Type = NotificationType.Success
});
} }
} }
if (buttonHovered) if (buttonHovered)
+13 -2
View File
@@ -1480,7 +1480,13 @@ public sealed class MacroEditor : Window, IDisposable
foreach (var action in parsedActions) foreach (var action in parsedActions)
AddStep(action); AddStep(action);
Service.PluginInterface.UiBuilder.AddNotification($"Imported macro with {parsedActions.Count} step{(parsedActions.Count != 1 ? "s" : "")}", "Craftimizer Macro Imported", NotificationType.Success); Service.Plugin.DisplayNotification(new()
{
Content = $"Imported macro with {parsedActions.Count} step{(parsedActions.Count != 1 ? "s" : "")}",
MinimizedText = $"Imported {parsedActions.Count} step macro",
Title = "Macro Imported",
Type = NotificationType.Success
});
popupImportUrlTokenSource?.Cancel(); popupImportUrlTokenSource?.Cancel();
ImGui.CloseCurrentPopup(); ImGui.CloseCurrentPopup();
} }
@@ -1530,7 +1536,12 @@ public sealed class MacroEditor : Window, IDisposable
Macro.Clear(); Macro.Clear();
foreach (var action in actions) foreach (var action in actions)
AddStep(action); AddStep(action);
Service.PluginInterface.UiBuilder.AddNotification($"Imported macro \"{name}\"", "Craftimizer Macro Imported", NotificationType.Success); Service.Plugin.DisplayNotification(new()
{
Content = $"Imported macro \"{name}\"",
Title = "Macro Imported",
Type = NotificationType.Success
});
popupImportUrlTokenSource?.Cancel(); popupImportUrlTokenSource?.Cancel();
ImGui.CloseCurrentPopup(); ImGui.CloseCurrentPopup();