<Page
    x:Class="Microsoft.PowerToys.Settings.UI.Views.GeneralPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Microsoft.PowerToys.Settings.UI.Views"
    xmlns:viewModel="using:Microsoft.PowerToys.Settings.UI.ViewModels"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:converters="using:Microsoft.Toolkit.Uwp.UI.Converters"
    xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Page.Resources>
        <converters:BoolToObjectConverter x:Key="BoolToVisibilityConverter" TrueValue="Collapsed" FalseValue="Visible"/>
        <converters:BoolToVisibilityConverter x:Key="VisibleIfTrueConverter"/>
        <viewModel:GeneralViewModel x:Key="eventViewModel"/>
    </Page.Resources>


    <Grid ColumnSpacing="{StaticResource DefaultColumnSpacing}" RowSpacing="{StaticResource DefaultRowSpacing}">
        <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="LayoutVisualStates">
                <VisualState x:Name="WideLayout">
                    <VisualState.StateTriggers>
                        <AdaptiveTrigger MinWindowWidth="{StaticResource WideLayoutMinWidth}" />
                    </VisualState.StateTriggers>
                    <VisualState.Setters>
                        <Setter Target="SidePanel.(Grid.Column)" Value="1"/>
                        <Setter Target="SidePanel.Width" Value="{StaticResource SidePanelWidth}"/>
                        <Setter Target="GeneralSettingsView.(Grid.Row)" Value="0" />
                        <Setter Target="LinksPanel.(RelativePanel.Below)" Value="AboutImage"/>
                        <Setter Target="AboutTitle.Visibility" Value="Visible" />
                    </VisualState.Setters>
                </VisualState>
                <VisualState x:Name="SmallLayout">
                    <VisualState.StateTriggers>
                        <AdaptiveTrigger MinWindowWidth="{StaticResource SmallLayoutMinWidth}" />
                    </VisualState.StateTriggers>
                    <VisualState.Setters>
                        <Setter Target="SidePanel.(Grid.Column)" Value="0"/>
                        <Setter Target="SidePanel.Width" Value="500"/>
                        <Setter Target="GeneralSettingsView.(Grid.Row)" Value="1" />
                        <Setter Target="LinksPanel.(RelativePanel.RightOf)" Value="AboutImage"/>
                        <Setter Target="LinksPanel.(RelativePanel.AlignTopWith)" Value="AboutImage"/>
                        <Setter Target="AboutImage.Margin" Value="0,12,12,0"/>
                        <Setter Target="AboutTitle.Visibility" Value="Collapsed" />
                    </VisualState.Setters>
                </VisualState>
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>

        <StackPanel Orientation="Vertical" 
                    x:Name="GeneralSettingsView">
            <TextBlock x:Uid="Admin_Mode" FontWeight="SemiBold"
                       Style="{StaticResource SubtitleTextBlockStyle}"/>

            <TextBlock Text="{Binding Mode=TwoWay, Path=RunningAsText, Source={StaticResource eventViewModel}}"
                       Margin="{StaticResource SmallTopMargin}"/>

            <Button x:Uid="GeneralPage_RestartAsAdmin_Button"
                    Margin="{StaticResource SmallTopMargin}"
                    Style="{StaticResource AccentButtonStyle}"
                    Command = "{Binding RestartElevatedButtonEventHandler, Source={StaticResource eventViewModel}}"
                    IsEnabled="{Binding Mode=TwoWay, Path=IsAdminButtonEnabled, Source={StaticResource eventViewModel}}"
                    />

            <TextBlock x:Uid="General_RunAsAdminRequired"
                       Foreground="{ThemeResource SystemControlErrorTextForegroundBrush}"
                       Visibility="{Binding Mode=TwoWay, Path=IsElevated, Source={StaticResource eventViewModel}, Converter={StaticResource BoolToVisibilityConverter}}"
                       Margin="0,24,0,-8" />

            <ToggleSwitch Margin="{StaticResource SmallTopMargin}"
                          x:Uid="GeneralSettings_AlwaysRunAsAdminText"
                          IsEnabled="{Binding Mode=TwoWay, Path=IsElevated, Source={StaticResource eventViewModel}}"
                          IsOn="{Binding Mode=TwoWay, Path=RunElevated, Source={StaticResource eventViewModel}}"/>

            <HyperlinkButton NavigateUri="https://aka.ms/powertoysDetectedElevatedHelp">
                <TextBlock x:Uid="GeneralPage_ToggleSwitch_AlwaysRunElevated_Link" />
            </HyperlinkButton>


            <TextBlock x:Uid="ShortcutGuide_Appearance_Behavior"
                       Style="{StaticResource SettingsGroupTitleStyle}"/>

            <muxc:RadioButtons x:Uid="RadioButtons_Name_Theme"
                               Margin="{StaticResource SmallTopMargin}">
                <RadioButton x:Uid="GeneralPage_Radio_Theme_Dark"
                             Content="Dark"
                             IsChecked="{ Binding Mode=TwoWay, Path=IsDarkThemeRadioButtonChecked, Source={StaticResource eventViewModel}}"/>

                <RadioButton x:Uid="GeneralPage_Radio_Theme_Light" 
                             Content="Light"
                             IsChecked="{ Binding Mode=TwoWay, Path=IsLightThemeRadioButtonChecked, Source={StaticResource eventViewModel}}"/>

                <RadioButton x:Uid="GeneralPage_Radio_Theme_Default"
                             Content="System default"
                             IsChecked="{ Binding Mode=TwoWay, Path=IsSystemThemeRadioButtonChecked, Source={StaticResource eventViewModel}}"/>
            </muxc:RadioButtons>

            <ToggleSwitch x:Uid="GeneralPage_ToggleSwitch_RunAtStartUp"  
                          Margin="{StaticResource SmallTopMargin}" 
                          IsOn="{Binding Mode=TwoWay, Path=Startup, Source={StaticResource eventViewModel}}"/>



            <TextBlock x:Uid="General_Updates"
                       Style="{StaticResource SettingsGroupTitleStyle}"/>
            <StackPanel Orientation="Horizontal" Margin="{StaticResource SmallTopMargin}">
                <TextBlock Text="Version: " x:Uid="General_Version"  />
                <HyperlinkButton NavigateUri="https://github.com/microsoft/PowerToys/releases" Margin="4,-6,0,0">
                    <TextBlock Text="{x:Bind ViewModel.PowerToysVersion }" />
                </HyperlinkButton>
            </StackPanel>


            <Button x:Uid="GeneralPage_CheckForUpdates"
                    Style="{StaticResource AccentButtonStyle}"
                    Foreground="White"
                    Command="{Binding CheckFoUpdatesEventHandler, Source={StaticResource eventViewModel}}"
                    />

            <ToggleSwitch x:Uid="GeneralPage_ToggleSwitch_AutoDownloadUpdates" 
                          Margin="{StaticResource MediumTopMargin}"
                          Visibility="{Binding Mode=TwoWay, Path=IsAdmin, Source={StaticResource eventViewModel}, Converter={StaticResource VisibleIfTrueConverter}}"
                          IsOn="{Binding Mode=TwoWay, Path=AutoDownloadUpdates, Source={StaticResource eventViewModel}}"/>

        </StackPanel>

        <RelativePanel x:Name="SidePanel" 
                    HorizontalAlignment="Left"
                    Width="{StaticResource SidePanelWidth}"
                    Grid.Column="1">
            <StackPanel x:Name="DescriptionPanel">
                <TextBlock x:Uid="GeneralPage_AboutPowerToysHeader" x:Name="AboutTitle" Grid.ColumnSpan="2"
                       Style="{StaticResource SettingsGroupTitleStyle}"
                       Margin="{StaticResource XSmallBottomMargin}"/>
                <TextBlock x:Uid="About_PowerToys"
                           TextWrapping="Wrap"
                           Grid.Row="1" />
            </StackPanel>

            <Border x:Name="AboutImage"
                    CornerRadius="4"
                    Grid.Row="2"
                    MaxWidth="240"
                    HorizontalAlignment="Left"
                    Margin="{StaticResource SmallTopBottomMargin}"
                    RelativePanel.Below="DescriptionPanel">
                <Image Source="ms-appx:///Assets/Modules/PT.png" />
            </Border>
            <StackPanel x:Name="LinksPanel"
                        RelativePanel.Below="AboutImage"
                        Orientation="Vertical" >

                <HyperlinkButton NavigateUri="https://github.com/microsoft/PowerToys/">
                    <TextBlock x:Uid="General_Repository"/>
                </HyperlinkButton>

                <HyperlinkButton NavigateUri="https://github.com/microsoft/PowerToys/issues">
                    <TextBlock x:Uid="GeneralPage_ReportAbug"/>
                </HyperlinkButton>

                <HyperlinkButton NavigateUri="https://github.com/microsoft/PowerToys/issues">
                    <TextBlock x:Uid="GeneralPage_RequestAFeature_URL"/>
                </HyperlinkButton>

                <HyperlinkButton NavigateUri=" http://go.microsoft.com/fwlink/?LinkId=521839">
                    <TextBlock x:Uid="GeneralPage_PrivacyStatement_URL"/>
                </HyperlinkButton>

                <HyperlinkButton NavigateUri="https://github.com/microsoft/PowerToys/blob/master/NOTICE.md">
                    <TextBlock x:Uid="OpenSource_Notice"/>
                </HyperlinkButton>
            </StackPanel>
        </RelativePanel>
    </Grid>
</Page>