<Window x:Class="PSLauncher.App.Views.SettingsDialog"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="clr-namespace:PSLauncher.App.ViewModels"
        Title="Paramètres"
        Width="640" Height="720"
        MinWidth="540" MinHeight="500"
        WindowStartupLocation="CenterOwner"
        Background="{StaticResource Brush.Bg.Window}"
        d:DataContext="{d:DesignInstance Type=vm:SettingsViewModel}"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        mc:Ignorable="d"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>

        <!-- Header -->
        <Border Grid.Row="0" Padding="32,24,32,16">
            <TextBlock Text="Paramètres" FontSize="22" FontWeight="SemiBold"
                       Foreground="{StaticResource Brush.Text.Primary}" />
        </Border>

        <ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto" Padding="32,0,32,16">
            <StackPanel>

                <!-- License (en tête, bordure colorée selon état) -->
                <Border BorderThickness="2"
                        CornerRadius="6" Padding="20" Margin="0,0,0,16">
                    <Border.Style>
                        <Style TargetType="Border">
                            <Setter Property="Background" Value="#2A1414" />
                            <Setter Property="BorderBrush" Value="#EF4444" />
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding LicenseSeverity}" Value="Ok">
                                    <Setter Property="Background" Value="{StaticResource Brush.Status.InstalledBg}" />
                                    <Setter Property="BorderBrush" Value="{StaticResource Brush.Status.Installed}" />
                                </DataTrigger>
                                <DataTrigger Binding="{Binding LicenseSeverity}" Value="Warning">
                                    <Setter Property="Background" Value="{StaticResource Brush.Status.BusyBg}" />
                                    <Setter Property="BorderBrush" Value="{StaticResource Brush.Status.Busy}" />
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Border.Style>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="Auto" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                        </Grid.RowDefinitions>

                        <!-- Icône -->
                        <TextBlock Grid.Row="0" Grid.RowSpan="2" Grid.Column="0"
                                   Text="{Binding LicenseIcon}"
                                   FontSize="36" FontWeight="Bold"
                                   VerticalAlignment="Center"
                                   Margin="0,0,16,0">
                            <TextBlock.Style>
                                <Style TargetType="TextBlock">
                                    <Setter Property="Foreground" Value="#EF4444" />
                                    <Style.Triggers>
                                        <DataTrigger Binding="{Binding LicenseSeverity}" Value="Ok">
                                            <Setter Property="Foreground" Value="{StaticResource Brush.Status.Installed}" />
                                        </DataTrigger>
                                        <DataTrigger Binding="{Binding LicenseSeverity}" Value="Warning">
                                            <Setter Property="Foreground" Value="{StaticResource Brush.Status.Busy}" />
                                        </DataTrigger>
                                    </Style.Triggers>
                                </Style>
                            </TextBlock.Style>
                        </TextBlock>

                        <!-- Header text -->
                        <TextBlock Grid.Row="0" Grid.Column="1"
                                   Text="LICENSE"
                                   FontSize="11" FontWeight="Bold"
                                   Foreground="{StaticResource Brush.Text.Secondary}" />
                        <TextBlock Grid.Row="1" Grid.Column="1"
                                   Text="{Binding LicenseInfo}"
                                   Foreground="{StaticResource Brush.Text.Primary}"
                                   FontWeight="SemiBold" FontSize="14"
                                   Margin="0,2,0,0"
                                   TextWrapping="Wrap" />

                        <!-- Machine ID en dessous -->
                        <Grid Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2" Margin="0,12,0,0">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="Auto" />
                            </Grid.ColumnDefinitions>
                            <StackPanel Grid.Column="0">
                                <TextBlock Text="Identifiant machine (anonyme)"
                                           FontSize="11"
                                           Foreground="{StaticResource Brush.Text.Secondary}" />
                                <TextBlock Text="{Binding MachineId}"
                                           FontFamily="Consolas" FontSize="11"
                                           Foreground="{StaticResource Brush.Text.Primary}"
                                           Margin="0,2,0,0" TextTrimming="CharacterEllipsis" />
                            </StackPanel>
                            <Button Grid.Column="1"
                                    Style="{StaticResource SecondaryButton}"
                                    Content="📋  Copier"
                                    Command="{Binding CopyMachineIdCommand}" />
                        </Grid>
                    </Grid>
                </Border>

                <!-- Serveur -->
                <Border Background="{StaticResource Brush.Bg.Card}"
                        BorderBrush="{StaticResource Brush.Border}" BorderThickness="1"
                        CornerRadius="6" Padding="20" Margin="0,0,0,16">
                    <StackPanel>
                        <TextBlock Text="SERVEUR"
                                   FontSize="11" FontWeight="Bold"
                                   Foreground="{StaticResource Brush.Text.Secondary}"
                                   Margin="0,0,0,8" />
                        <TextBlock Text="URL de l'API"
                                   Foreground="{StaticResource Brush.Text.Secondary}"
                                   FontSize="12" Margin="0,0,0,4" />
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="Auto" />
                            </Grid.ColumnDefinitions>
                            <TextBox Grid.Column="0"
                                     Text="{Binding ServerBaseUrl, UpdateSourceTrigger=PropertyChanged}"
                                     Background="#1A1A20"
                                     Foreground="{StaticResource Brush.Text.Primary}"
                                     BorderBrush="{StaticResource Brush.Border}"
                                     BorderThickness="1" Padding="8" />
                            <Button Grid.Column="1" Margin="8,0,0,0"
                                    Style="{StaticResource SecondaryButton}"
                                    Content="Tester"
                                    Command="{Binding TestConnectionCommand}"
                                    IsEnabled="{Binding IsTestingConnection, Converter={StaticResource InverseBoolToBool}}" />
                        </Grid>
                        <TextBlock Text="{Binding ConnectionStatus}"
                                   Foreground="{StaticResource Brush.Text.Secondary}"
                                   FontSize="12" Margin="0,8,0,0" TextWrapping="Wrap" />
                    </StackPanel>
                </Border>

                <!-- Installation -->
                <Border Background="{StaticResource Brush.Bg.Card}"
                        BorderBrush="{StaticResource Brush.Border}" BorderThickness="1"
                        CornerRadius="6" Padding="20" Margin="0,0,0,16">
                    <StackPanel>
                        <TextBlock Text="INSTALLATION"
                                   FontSize="11" FontWeight="Bold"
                                   Foreground="{StaticResource Brush.Text.Secondary}"
                                   Margin="0,0,0,8" />
                        <TextBlock Text="Dossier où sont installées les versions"
                                   Foreground="{StaticResource Brush.Text.Secondary}"
                                   FontSize="12" Margin="0,0,0,4" />
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="Auto" />
                            </Grid.ColumnDefinitions>
                            <TextBox Grid.Column="0"
                                     Text="{Binding InstallRoot, UpdateSourceTrigger=PropertyChanged}"
                                     Background="#1A1A20"
                                     Foreground="{StaticResource Brush.Text.Primary}"
                                     BorderBrush="{StaticResource Brush.Border}"
                                     BorderThickness="1" Padding="8"
                                     FontFamily="Consolas" />
                            <Button Grid.Column="1" Margin="8,0,0,0"
                                    Style="{StaticResource SecondaryButton}"
                                    Content="📁  Parcourir"
                                    Command="{Binding BrowseInstallRootCommand}" />
                        </Grid>
                    </StackPanel>
                </Border>

                <!-- Cache -->
                <Border Background="{StaticResource Brush.Bg.Card}"
                        BorderBrush="{StaticResource Brush.Border}" BorderThickness="1"
                        CornerRadius="6" Padding="20" Margin="0,0,0,16">
                    <StackPanel>
                        <TextBlock Text="CACHE DE TÉLÉCHARGEMENTS"
                                   FontSize="11" FontWeight="Bold"
                                   Foreground="{StaticResource Brush.Text.Secondary}"
                                   Margin="0,0,0,8" />
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="Auto" />
                            </Grid.ColumnDefinitions>
                            <StackPanel Grid.Column="0">
                                <TextBlock Text="{Binding CacheDirectory}"
                                           FontFamily="Consolas" FontSize="11"
                                           Foreground="{StaticResource Brush.Text.Primary}"
                                           TextTrimming="CharacterEllipsis" />
                                <TextBlock FontSize="12"
                                           Foreground="{StaticResource Brush.Text.Secondary}">
                                    <Run Text="Taille actuelle : " />
                                    <Run Text="{Binding CacheSizeDisplay}" FontWeight="SemiBold" />
                                </TextBlock>
                            </StackPanel>
                            <Button Grid.Column="1" Margin="8,0,0,0"
                                    Style="{StaticResource SecondaryButton}"
                                    Content="📁"
                                    Command="{Binding OpenCacheFolderCommand}" />
                            <Button Grid.Column="2" Margin="8,0,0,0"
                                    Style="{StaticResource SecondaryButton}"
                                    Content="🗑  Vider"
                                    Command="{Binding ClearCacheCommand}" />
                        </Grid>
                    </StackPanel>
                </Border>

                <!-- Logs / About -->
                <Border Background="{StaticResource Brush.Bg.Card}"
                        BorderBrush="{StaticResource Brush.Border}" BorderThickness="1"
                        CornerRadius="6" Padding="20" Margin="0,0,0,16">
                    <StackPanel>
                        <TextBlock Text="LOGS &amp; APPLICATION"
                                   FontSize="11" FontWeight="Bold"
                                   Foreground="{StaticResource Brush.Text.Secondary}"
                                   Margin="0,0,0,8" />
                        <TextBlock FontSize="13"
                                   Foreground="{StaticResource Brush.Text.Primary}">
                            <Run Text="Version : " />
                            <Run Text="{Binding LauncherVersion, Mode=OneWay}" FontWeight="SemiBold" />
                        </TextBlock>
                        <Grid Margin="0,8,0,0">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="Auto" />
                            </Grid.ColumnDefinitions>
                            <StackPanel Grid.Column="0">
                                <TextBlock Text="{Binding LogsDirectory}"
                                           FontFamily="Consolas" FontSize="11"
                                           Foreground="{StaticResource Brush.Text.Primary}"
                                           TextTrimming="CharacterEllipsis" />
                                <TextBlock Text="Logs rotation quotidienne, 10 jours conservés"
                                           FontSize="12"
                                           Foreground="{StaticResource Brush.Text.Secondary}"
                                           Margin="0,2,0,0" />
                            </StackPanel>
                            <Button Grid.Column="1" Margin="8,0,0,0"
                                    Style="{StaticResource SecondaryButton}"
                                    Content="📁  Ouvrir"
                                    Command="{Binding OpenLogsFolderCommand}" />
                        </Grid>
                    </StackPanel>
                </Border>

            </StackPanel>
        </ScrollViewer>

        <!-- Footer -->
        <Border Grid.Row="2" Background="{StaticResource Brush.Bg.Footer}"
                BorderBrush="{StaticResource Brush.Border}" BorderThickness="0,1,0,0"
                Padding="20,12">
            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
                <Button Style="{StaticResource SecondaryButton}"
                        Content="Annuler"
                        IsCancel="True"
                        Margin="0,0,12,0"
                        Click="OnCancel" />
                <Button Style="{StaticResource AccentButton}"
                        Content="Enregistrer"
                        Padding="32,8"
                        IsDefault="True"
                        Click="OnSave" />
            </StackPanel>
        </Border>
    </Grid>
</Window>
