Phase 5-UI: Launcher auf Toolstrip-Modell + SettingsView (Designer-first)

- LauncherForm: lstView-Ansatz entfernt (lstViews/colName/pnlBottom/btnOpen raus).
  Fenster werden ueber toolstrip_windows-Buttons geoeffnet/fokussiert:
  btn_settings -> Settings, btn_terminal -> Terminal (Bindung per stabiler View-ID).
- statusStrip_info: Live-Status (Trading, Modul-Anzahl, API WSS/Polling) via 1s-Timer.
- toolstrip_quickbar bleibt fuer Schnellaktionen (Trading an/aus) reserviert.
- Neue SettingsView (UserControl + Designer): ServerSettings-PropertyGrid +
  Speichern/Neu laden; Verhalten wie bisheriger Settings-Tab. In Program.cs registriert.
- Build 0 Fehler.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-07-02 11:44:47 +02:00
co-authored by Claude Opus 4.8
parent 1781d71983
commit f112668147
9 changed files with 378 additions and 147 deletions
+61
View File
@@ -0,0 +1,61 @@
using System;
using System.Windows.Forms;
using PolyTraderSharp.Models;
using PolyTraderSharp.Services;
namespace PolyTraderSharp.Ui.Views
{
/// <summary>
/// Core-Settings-Ansicht: bearbeitet die ServerSettings über ein PropertyGrid.
/// Designbar (siehe SettingsView.Designer.cs); Laufzeit-Abhängigkeiten via Initialize.
/// Verhalten entspricht dem bisherigen Settings-Tab (Speichern -> XML + Services neu laden).
/// </summary>
public partial class SettingsView : UserControl
{
private const string SettingsPath = "server_settings.xml";
private ServerSettings _settings = new();
private ThreemaService? _threema;
private MullvadVpnService? _vpn;
private TerminalLogger? _logger;
public SettingsView()
{
InitializeComponent();
btnSave.Click += (_, _) => Save();
btnReload.Click += (_, _) => Reload();
}
public void Initialize(ThreemaService threema, MullvadVpnService vpn, TerminalLogger logger)
{
_threema = threema;
_vpn = vpn;
_logger = logger;
Reload();
}
private void Reload()
{
_settings = ServerSettings.Load(SettingsPath);
propertyGrid.SelectedObject = _settings;
}
private void Save()
{
try
{
_settings.Save(SettingsPath);
_threema?.ReloadSettings();
_vpn?.ReloadSettings();
_logger?.Info("Server-Einstellungen gespeichert und Services neu geladen.");
MessageBox.Show("Server-Einstellungen gespeichert.", "Erfolg",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show($"Fehler beim Speichern: {ex.Message}", "Fehler",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}