using System.Collections.Generic;
using System.Drawing;
using PolyTrader.Core.Modularity;
namespace PolyTraderSharp.Ui
{
///
/// Löst die toolkit-neutralen -Schlüssel gegen die WinForms-
/// Bildressourcen der App auf. Diese Zuordnung ist die einzige Stelle, an der Views und
/// Bilddaten zusammenkommen – Core und Module kennen nur noch den Schlüssel als Zeichenkette.
///
/// Die Avalonia-Shell bekommt später ein eigenes Gegenstück mit denselben Schlüsseln; die
/// Registrierungen in Core und Modulen bleiben dabei unverändert.
///
internal static class ViewIcons
{
/// Symbol-Schlüssel → Bildressource. Unbekannte Schlüssel liefern null (Text-only-Menüeintrag).
private static readonly Dictionary Map = new()
{
["dashboard"] = Properties.Resources.dashboard,
["settings"] = Properties.Resources.setting_tools,
["terminal"] = Properties.Resources.error_log,
["jobs"] = Properties.Resources.system_time,
["accounting"] = Properties.Resources.coins_in_hand,
["copytrading"] = Properties.Resources.cross_reference,
["resolutionfarming"] = Properties.Resources.file_start_workflow,
["supervisor"] = Properties.Resources.emotion_batman,
};
///
/// Standard-Symbolschlüssel je View-ID. Greift für Views, die selbst keinen
/// setzen – u.a. die Modul-Fenster, die die App-Ressourcen
/// nicht kennen. Ersetzt die frühere Icon-Zuweisung in Program.AssignMenuIcons.
///
private static readonly Dictionary DefaultKeyByViewId = new()
{
["core.dashboard"] = "dashboard",
["core.settings"] = "settings",
["core.terminal"] = "terminal",
["core.jobs"] = "jobs",
["accounting.main"] = "accounting",
["copytrading.main"] = "copytrading",
["resolutionfarming.main"] = "resolutionfarming",
["supervisor.main"] = "supervisor",
};
/// Bildressource zum Schlüssel, oder null (kein Symbol / unbekannter Schlüssel).
public static Image? Resolve(string? iconKey) =>
iconKey != null && Map.TryGetValue(iconKey, out var img) ? img : null;
///
/// Setzt bei allen registrierten Views den Standard-Symbolschlüssel, sofern noch keiner gesetzt ist.
///
public static void AssignDefaults(IModuleUiHost uiHost)
{
foreach (var view in uiHost.Views)
if (view.IconKey == null && DefaultKeyByViewId.TryGetValue(view.Id, out var key))
view.IconKey = key;
}
}
}