using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using PolyTrader.App.Avalonia.Controls;
using PolyTrader.App.Avalonia.ViewModels;
using PolyTrader.Core.Modularity;
using PolyTrader.Modules.CopyTrading.Persistence;
using PolyTraderSharp;
using PolyTraderSharp.Models;
namespace PolyTrader.App.Avalonia.Views.Modules
{
///
/// Copytrading-Fenster mit vier Tabs: Master-Trader, Offene Trades, Geschlossene Trades,
/// Account-Einstellungen. Layout vollständig in CopyTradingWindow.axaml.
///
public partial class CopyTradingWindow : UserControl
{
private readonly ObservableCollection _traders = new();
private readonly ObservableCollection _assignments = new();
private readonly ObservableCollection _openTrades = new();
private readonly ObservableCollection _closedTrades = new();
private readonly TradingState _state;
private readonly CopyTradingState _copyState;
private readonly ITrackedTraderRepository _traderRepo;
private readonly ICopyTradingAccountSettingsRepository _settingsRepo;
private readonly ICopyTradeLogRepository _tradeLog;
private List _closedBase = new();
private bool _loading;
public CopyTradingWindow() => AvaloniaXamlLoader.Load(this);
public CopyTradingWindow(IModuleUiHost host, TradingState state, CopyTradingState copyState,
ITrackedTraderRepository traderRepo, ICopyTradingAccountSettingsRepository settingsRepo,
ICopyTradeLogRepository tradeLog) : this()
{
_state = state;
_copyState = copyState;
_traderRepo = traderRepo;
_settingsRepo = settingsRepo;
_tradeLog = tradeLog;
// --- Master-Trader ---
var gridTraders = this.FindControl("gridTraders")!;
gridTraders.ItemsSource = _traders;
gridTraders.SelectionChanged += (_, _) => ShowSelectedTrader();
this.FindControl("listAccounts")!.ItemsSource = _assignments;
this.FindControl