using System.Drawing;
using IBKRTrader.Core.Modularity;
namespace IBKRTrader.UI;
///
/// Löst die toolkit-neutralen -Schlüssel gegen die Bildressourcen
/// der Shell auf. Der Core kennt seit der Linux-Portierung keine Bilddaten mehr
/// (System.Drawing.Image ist seit .NET 7 Windows-only) – er liefert nur noch den Schlüssel,
/// die jeweilige Shell das Bild.
///
/// Die Avalonia-Shell bekommt ein gleichnamiges Gegenstück mit denselben Schlüsseln
/// und denselben PNG-Dateien, sodass Core und Module unverändert bleiben.
///
public static class ViewIcons
{
/// Symbol-Schlüssel → Bildressource aus Resources/.
private static readonly Dictionary ImageByKey = new(StringComparer.OrdinalIgnoreCase)
{
["dashboard"] = Properties.Resources.dashboard,
["workers"] = Properties.Resources.system_time,
["logs"] = Properties.Resources.error_log,
["settings"] = Properties.Resources.setting_tools,
["congresstrading"] = Properties.Resources.cross_reference,
["accounting"] = Properties.Resources.coins_in_hand,
["supervisor"] = Properties.Resources.token_quantifier,
};
/// Standard-Symbolschlüssel je View-ID – greift für Views, die keinen eigenen setzen.
private static readonly Dictionary DefaultKeyByViewId = new(StringComparer.OrdinalIgnoreCase)
{
["core.dashboard"] = "dashboard",
["core.workers"] = "workers",
["core.logs"] = "logs",
["core.settings"] = "settings",
["congresstrading.main"] = "congresstrading",
["accounting.main"] = "accounting",
["supervisor.main"] = "supervisor",
};
/// Bild zum Schlüssel, oder null (kein Symbol / unbekannter Schlüssel).
public static Image? Resolve(string? iconKey) =>
iconKey != null && ImageByKey.TryGetValue(iconKey, out var img) ? img : null;
/// Setzt bei allen registrierten Views den Standard-Schlüssel, falls noch keiner gesetzt ist.
public static void AssignDefaults(IModuleUiHost host)
{
foreach (var view in host.Views)
if (view.IconKey is null && DefaultKeyByViewId.TryGetValue(view.Id, out var key))
view.IconKey = key;
}
}