<UserControl
    xmlns="https://github.com/avaloniaui"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
    xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"
    xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
    mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
    x:Class="Ryujinx.Ava.UI.Views.Main.MainStatusBarView"
    x:DataType="viewModels:MainWindowViewModel">
    <Design.DataContext>
        <viewModels:MainWindowViewModel />
    </Design.DataContext>
    <Grid
        Name="StatusBar"
        Margin="0"
        MinHeight="22"
        HorizontalAlignment="Stretch"
        VerticalAlignment="Bottom"
        Background="{DynamicResource ThemeContentBackgroundColor}"
        DockPanel.Dock="Bottom"
        IsVisible="{Binding ShowMenuAndStatusBar}">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>
        <StackPanel
            Grid.Column="0"
            Margin="5"
            VerticalAlignment="Center"
            IsVisible="{Binding EnableNonGameRunningControls}">
            <Grid Margin="0">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition />
                </Grid.ColumnDefinitions>
                <Button
                    Width="25"
                    Height="25"
                    MinWidth="0"
                    Margin="0,0,5,0"
                    VerticalAlignment="Center"
                    Background="Transparent"
                    Click="Refresh_OnClick">
                    <ui:SymbolIcon
                        Width="50"
                        Height="100"
                        Symbol="Refresh" />
                </Button>
                <TextBlock
                    Name="LoadStatus"
                    Grid.Column="1"
                    Margin="0,0,5,0"
                    VerticalAlignment="Center"
                    IsVisible="{Binding EnableNonGameRunningControls}"
                    Text="{locale:Locale StatusBarGamesLoaded}" />
                <ProgressBar
                    Name="LoadProgressBar"
                    Grid.Column="2"
                    Height="6"
                    VerticalAlignment="Center"
                    Foreground="{DynamicResource SystemAccentColorLight2}"
                    IsVisible="{Binding StatusBarVisible}"
                    Maximum="{Binding StatusBarProgressMaximum}"
                    Value="{Binding StatusBarProgressValue}" />
            </Grid>
        </StackPanel>
        <StackPanel
            Grid.Column="1"
            Margin="0,2"
            HorizontalAlignment="Left"
            VerticalAlignment="Center"
            IsVisible="{Binding IsGameRunning}"
            MaxHeight="18"
            Orientation="Horizontal">
            <TextBlock
                Name="VsyncStatus"
                Margin="5,0,5,0"
                HorizontalAlignment="Left"
                VerticalAlignment="Center"
                Foreground="{Binding VsyncColor}"
                IsVisible="{Binding !ShowLoadProgress}"
                PointerReleased="VsyncStatus_PointerReleased"
                Text="VSync"
                TextAlignment="Left" />
            <Border
                Width="2"
                Height="12"
                Margin="0"
                BorderBrush="Gray"
                Background="Gray"
                BorderThickness="1"
                IsVisible="{Binding !ShowLoadProgress}" />
            <TextBlock
                Name="DockedStatus"
                Margin="5,0,5,0"
                HorizontalAlignment="Left"
                VerticalAlignment="Center"
                IsVisible="{Binding !ShowLoadProgress}"
                PointerReleased="DockedStatus_PointerReleased"
                Text="{Binding DockedStatusText}"
                TextAlignment="Left" />
            <Border
                Width="2"
                Height="12"
                Margin="0"
                BorderBrush="Gray"
                Background="Gray"
                BorderThickness="1"
                IsVisible="{Binding !ShowLoadProgress}" />
            <TextBlock
                Name="AspectRatioStatus"
                Margin="5,0,5,0"
                HorizontalAlignment="Left"
                VerticalAlignment="Center"
                IsVisible="{Binding !ShowLoadProgress}"
                PointerReleased="AspectRatioStatus_PointerReleased"
                Text="{Binding AspectRatioStatusText}"
                TextAlignment="Left" />
            <Border
                Width="2"
                Height="12"
                Margin="0"
                BorderBrush="Gray"
                Background="Gray"
                BorderThickness="1"
                IsVisible="{Binding !ShowLoadProgress}" />
            <ToggleSplitButton
                Name="VolumeStatus"
                Padding="5,0,5,0"
                HorizontalAlignment="Left"
                VerticalAlignment="Center"
                VerticalContentAlignment="Center"
                Content="{Binding VolumeStatusText}"
                IsChecked="{Binding VolumeMuted}"
                IsVisible="{Binding !ShowLoadProgress}"
                Background="Transparent"
                BorderThickness="0"
                CornerRadius="0">
                <ToggleSplitButton.Styles>
                    <Style Selector=":checked">
                        <Style Selector="^:checked ContentPresenter">
                            <Setter Property="Foreground" Value="{DynamicResource ThemeForegroundColor}" />
                        </Style>
                    </Style>
                    <Style Selector="Border#SeparatorBorder">
                        <Setter Property="Opacity" Value="0" />
                    </Style>
                </ToggleSplitButton.Styles>
                <ToggleSplitButton.Flyout>
                    <Flyout Placement="Bottom" ShowMode="TransientWithDismissOnPointerMoveAway">
                        <Grid Margin="0">
                            <Slider
                                MaxHeight="40"
                                Width="150"
                                Margin="0"
                                Padding="0"
                                IsSnapToTickEnabled="True"
                                LargeChange="0.05"
                                Maximum="1"
                                Minimum="0"
                                SmallChange="0.01"
                                TickFrequency="0.05"
                                ToolTip.Tip="{locale:Locale AudioVolumeTooltip}"
                                Value="{Binding Volume}" />
                        </Grid>
                    </Flyout>
                </ToggleSplitButton.Flyout>
            </ToggleSplitButton>
            <Border
                Width="2"
                Height="12"
                Margin="0"
                BorderBrush="Gray"
                Background="Gray"
                BorderThickness="1"
                IsVisible="{Binding !ShowLoadProgress}" />
            <TextBlock
                Margin="5,0,5,0"
                HorizontalAlignment="Left"
                VerticalAlignment="Center"
                IsVisible="{Binding !ShowLoadProgress}"
                Text="{Binding GameStatusText}"
                TextAlignment="Left" />
            <Border
                Width="2"
                Height="12"
                Margin="0"
                BorderBrush="Gray"
                Background="Gray"
                BorderThickness="1"
                IsVisible="{Binding !ShowLoadProgress}" />
            <TextBlock
                Margin="5,0,5,0"
                HorizontalAlignment="Left"
                VerticalAlignment="Center"
                IsVisible="{Binding !ShowLoadProgress}"
                Text="{Binding FifoStatusText}"
                TextAlignment="Left" />
            <Border
                Width="2"
                Height="12"
                Margin="0"
                BorderBrush="Gray"
                Background="Gray"
                BorderThickness="1"
                IsVisible="{Binding !ShowLoadProgress}" />
            <TextBlock
                Margin="5,0,5,0"
                HorizontalAlignment="Left"
                VerticalAlignment="Center"
                IsVisible="{Binding !ShowLoadProgress}"
                Text="{Binding BackendText}"
                TextAlignment="Left" />
            <Border
                Width="2"
                Height="12"
                Margin="0"
                BorderBrush="Gray"
                Background="Gray"
                BorderThickness="1"
                IsVisible="{Binding !ShowLoadProgress}" />
            <TextBlock
                Margin="5,0,5,0"
                HorizontalAlignment="Left"
                VerticalAlignment="Center"
                IsVisible="{Binding !ShowLoadProgress}"
                Text="{Binding GpuNameText}"
                TextAlignment="Left" />
        </StackPanel>
        <StackPanel
            Grid.Column="3"
            Margin="0,0,5,0"
            VerticalAlignment="Center"
            IsVisible="{Binding ShowFirmwareStatus}"
            Orientation="Horizontal">
            <TextBlock
                Name="FirmwareStatus"
                Margin="0"
                HorizontalAlignment="Right"
                VerticalAlignment="Center"
                Text="{locale:Locale StatusBarSystemVersion}" />
        </StackPanel>
    </Grid>
</UserControl>
