VersaGUI/doc/03_tray_app.md
2026-03-30 19:51:38 +02:00

63 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# TrayApp
**Datei:** `TrayApp.cs`
## Verantwortung
- App-Lebenszyklus als `ApplicationContext` (kein Hauptfenster)
- Tray-Icon mit Verbindungsstatus und Kontextmenü
- Empfang und Routing aller Board-Events (via `SerialManager.PacketReceived`)
- Config/Makro-Dump-Empfang (chunked, via `_rxConfigBuf` / `_rxMacroBuf`)
- Öffnen des `ConfigForm` (nur eine Instanz gleichzeitig)
## Tray-Menü
```
[●/○] VersaPad verbunden / nicht verbunden (disabled, nur Anzeige)
──────────────────────────────────────────────
Konfiguration... → OpenConfigForm()
──────────────────────────────────────────────
Beenden → Application.Exit()
```
Icon und Tooltip spiegeln den Verbindungsstatus:
- Verbunden: `SystemIcons.Information`, Text "VersaPad verbunden"
- Getrennt: `SystemIcons.Application`, Text "VersaPad nicht verbunden"
(TODO: eigenes Icon einbinden)
## Board-Event-Handling (OnPacket)
| Event-ID | Aktion |
|---|---|
| `EvtConfigBegin` | `_rxConfigBuf = new byte[223]` |
| `EvtConfigData` | Chunk in `_rxConfigBuf` eintragen (`KeyId * 6` = Byte-Offset) |
| `EvtConfigEnd` | `DeviceConfig.FromBytes()``ConfigForm.RefreshAll()` |
| `EvtMacroBegin` | `_rxMacroBuf = new byte[256]` |
| `EvtMacroData` | Chunk in `_rxMacroBuf` eintragen |
| `EvtMacroEnd` | `MacroTable.FromBytes()` |
| `EvtPong` | MessageBox "Ping OK" |
| `EvtConfigAck` | MessageBox "Config gespeichert" |
| `EvtConfigNack` | MessageBox "Config FEHLER" |
| `EvtMacroAck` | MessageBox "Makros gespeichert" |
| `EvtKeyDown` | TODO: HOST_COMMAND-Aktion ausführen |
| `EvtEncCw/Ccw` | TODO: Encoder HOST_COMMAND |
## Verbindungslebenszyklus
```
OnConnected():
Icon + Text + Menü-Item aktualisieren
serial.RequestConfig() → Config-Dump vom Board
serial.RequestMacros() → Makro-Dump vom Board
OnDisconnected():
Icon + Text + Menü-Item aktualisieren
```
## TODOs in dieser Klasse
- HOST_COMMAND-Ausführung: `EvtKeyDown` empfangen → Aktion aus Config laden → URL/Programm starten
- Eigenes Tray-Icon statt `SystemIcons.Application`
- Debug-Log (`versapad_rx.txt`) entfernen