<Page
    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:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
    x:Class="Microsoft.PowerToys.Settings.UI.Views.PowerLauncherPage"
    xmlns:viewModel="using:Microsoft.PowerToys.Settings.UI.ViewModels"
    xmlns:CustomControls="using:Microsoft.PowerToys.Settings.UI.Controls"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
    AutomationProperties.LandmarkType="Main">

    <Grid RowSpacing="{StaticResource DefaultRowSpacing}">
        <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="LayoutVisualStates">
                <VisualState x:Name="WideLayout">
                    <VisualState.StateTriggers>
                        <AdaptiveTrigger MinWindowWidth="{StaticResource WideLayoutMinWidth}" />
                    </VisualState.StateTriggers>
                </VisualState>
                <VisualState x:Name="SmallLayout">
                    <VisualState.StateTriggers>
                        <AdaptiveTrigger MinWindowWidth="{StaticResource SmallLayoutMinWidth}" />
                        <AdaptiveTrigger MinWindowWidth="0" />
                    </VisualState.StateTriggers>
                    <VisualState.Setters>
                        <Setter Target="SidePanel.(Grid.Column)" Value="0"/>
                        <Setter Target="SidePanel.Width" Value="Auto"/>
                        <Setter Target="LauncherView.(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="LauncherView">
            <ToggleSwitch x:Uid="PowerLauncher_EnablePowerLauncher" 
                          IsOn="{x:Bind Mode=TwoWay, Path=ViewModel.EnablePowerLauncher}"/>

            <TextBlock x:Uid="Shortcuts"
                       Style="{StaticResource SettingsGroupTitleStyle}"
                       Foreground="{x:Bind Mode=OneWay, Path=ViewModel.EnablePowerLauncher, Converter={StaticResource ModuleEnabledToForegroundConverter}}"/>

            <CustomControls:HotkeySettingsControl x:Uid="PowerLauncher_OpenPowerLauncher"
                                                  HorizontalAlignment="Left"
                                                  MinWidth="240"
                                                  Margin="{StaticResource SmallTopMargin}"
                                                  HotkeySettings="{x:Bind Path=ViewModel.OpenPowerLauncher, Mode=TwoWay}"
                                                  Keys="Win, Ctrl, Alt, Shift"
                                                  Enabled="{x:Bind Mode=OneWay, Path=ViewModel.EnablePowerLauncher}"/>
            <!--<Custom:HotkeySettingsControl x:Uid="PowerLauncher_OpenFileLocation"
                                          HorizontalAlignment="Left"
                                          Margin="{StaticResource SmallTopMargin}"
                                          HotkeySettings="{Binding Path=ViewModel.OpenFileLocation, Mode=TwoWay}"
                                          IsEnabled="False"
                                        />
            <Custom:HotkeySettingsControl x:Uid="PowerLauncher_CopyPathLocation"
                                          HorizontalAlignment="Left"
                                          Margin="{StaticResource SmallTopMargin}"
                                          HotkeySettings="{Binding Path=ViewModel.CopyPathLocation, Mode=TwoWay}"
                                          Keys="Win, Ctrl, Alt, Shift"
                                          IsEnabled="False"
                                        />
            <Custom:HotkeySettingsControl x:Uid="PowerLauncher_OpenConsole"
                                          HorizontalAlignment="Left"
                                          Margin="{StaticResource SmallTopMargin}"
                                          HotkeySettings="{Binding Path=ViewModel.OpenConsole, Mode=TwoWay}"
                                          Keys="Win, Ctrl, Alt, Shift"
                                          IsEnabled="False"
                                        />-->

            <!--<CheckBox x:Uid="PowerLauncher_OverrideWinRKey" 
                      Margin="{StaticResource SmallTopMargin}"
                      IsChecked="False"
                      IsEnabled="False"
                      />-->

            <!--<CheckBox x:Uid="PowerLauncher_OverrideWinSKey"
                      Margin="{StaticResource SmallTopMargin}"
                      IsChecked="{Binding Mode=TwoWay, Path=ViewModel.OverrideWinSKey}"
                      IsEnabled="False"
                      />-->

            <CheckBox x:Uid="PowerLauncher_IgnoreHotkeysInFullScreen"
                      Margin="{StaticResource SmallTopMargin}"
                      IsChecked="{x:Bind Mode=TwoWay, Path=ViewModel.IgnoreHotkeysInFullScreen}"
                      IsEnabled="{x:Bind Mode=OneWay, Path=ViewModel.EnablePowerLauncher}"
                      />

            <TextBlock x:Uid="PowerLauncher_SearchResults"
                       Style="{StaticResource SettingsGroupTitleStyle}"
                       Foreground="{x:Bind Mode=OneWay, Path=ViewModel.EnablePowerLauncher, Converter={StaticResource ModuleEnabledToForegroundConverter}}"/>

            <!--<ComboBox x:Uid="PowerLauncher_SearchResultPreference"
                      MinWidth="320"
                      Margin="{StaticResource SmallTopMargin}"
                      ItemsSource="{Binding searchResultPreferencesOptions}"
                      SelectedItem="{Binding Mode=TwoWay, Path=SelectedSearchResultPreference}"
                      SelectedValuePath="Item2"
                      DisplayMemberPath="Item1"
                      IsEnabled="False"
                      />

            <ComboBox x:Uid="PowerLauncher_SearchTypePreference"
                      MinWidth="320"
                      Margin="{StaticResource SmallTopMargin}"
                      ItemsSource="{Binding searchTypePreferencesOptions}"
                      SelectedItem="{Binding Mode=TwoWay, Path=SelectedSearchTypePreference}"
                      SelectedValuePath="Item2"
                      DisplayMemberPath="Item1"
                      IsEnabled="False"
                      />-->

            <muxc:NumberBox x:Uid="PowerLauncher_MaximumNumberOfResults"
                            Value="{Binding Mode=TwoWay, Path=MaximumNumberOfResults}"
                            MinWidth="240"
                            SpinButtonPlacementMode="Compact"
                            HorizontalAlignment="Left"
                            Minimum="1"
                            Margin="{StaticResource SmallTopMargin}"
                            IsEnabled="{x:Bind Mode=OneWay, Path=ViewModel.EnablePowerLauncher}"/>

            <CheckBox x:Uid="PowerLauncher_ClearInputOnLaunch"
                      Margin="{StaticResource SmallTopMargin}"
                      IsChecked="{x:Bind Mode=TwoWay, Path=ViewModel.ClearInputOnLaunch}"
                      IsEnabled="{x:Bind Mode=OneWay, Path=ViewModel.EnablePowerLauncher}"
            />

            <CheckBox x:Uid="PowerLauncher_DisableDriveDetectionWarning"
	                Margin="{StaticResource SmallTopMargin}"
	                IsChecked="{x:Bind Mode=TwoWay, Path=ViewModel.DisableDriveDetectionWarning}"
	                IsEnabled="{x:Bind Mode=OneWay, Path=ViewModel.EnablePowerLauncher}"
	                />
            <TextBlock x:Uid="Appearance_GroupSettings"
                       Style="{StaticResource SettingsGroupTitleStyle}"
                       Foreground="{x:Bind Mode=OneWay, Path=ViewModel.EnablePowerLauncher, Converter={StaticResource ModuleEnabledToForegroundConverter}}" />

            <!-- We cannot navigate to all the radio buttons using the arrow keys because of an XYNavigation issue in the RadioButtons control.
            The screen reader does not read the heading when we tab into a radio button, even though the LabeledBy automation property is set.
            Link to the issue in the winui repository - https://github.com/microsoft/microsoft-ui-xaml/issues/3156 -->
            <TextBlock x:Uid="ColorModeHeader"
                       x:Name="RadioButtons_Name_Theme" 
                       Margin="{StaticResource SmallTopMargin}"
                       Foreground="{x:Bind Mode=OneWay, Path=ViewModel.EnablePowerLauncher, Converter={StaticResource ModuleEnabledToForegroundConverter}}" />
            <StackPanel AutomationProperties.LabeledBy="{Binding ElementName=RadioButtons_Name_Theme}">
                <RadioButton x:Uid="Radio_Theme_Dark"
                             IsEnabled="{x:Bind Mode=OneWay, Path=ViewModel.EnablePowerLauncher}"
                             IsChecked="{Binding Mode=TwoWay, Path=IsDarkThemeRadioButtonChecked}" />

                <RadioButton x:Uid="Radio_Theme_Light"
                             IsEnabled="{x:Bind Mode=OneWay, Path=ViewModel.EnablePowerLauncher}"
                             IsChecked="{Binding Mode=TwoWay, Path=IsLightThemeRadioButtonChecked}" />

                <RadioButton x:Uid="Radio_Theme_Default"
                             IsEnabled="{x:Bind Mode=OneWay, Path=ViewModel.EnablePowerLauncher}"
                             IsChecked="{Binding Mode=TwoWay, Path=IsSystemThemeRadioButtonChecked}" />
                <HyperlinkButton NavigateUri="ms-settings:colors">
                    <TextBlock x:Uid="Windows_Color_Settings" />
                </HyperlinkButton>
            </StackPanel>
        </StackPanel>

        <RelativePanel x:Name="SidePanel" 
                    HorizontalAlignment="Left"
                    Width="{StaticResource SidePanelWidth}"
                    Grid.Column="1">
            <StackPanel x:Name="DescriptionPanel">
                <TextBlock x:Uid="About_PowerLauncher" x:Name="AboutTitle" Grid.ColumnSpan="2"
                       Style="{StaticResource SettingsGroupTitleStyle}"
                       Margin="{StaticResource XSmallBottomMargin}"/>
                <TextBlock x:Uid="PowerLauncher_Description"
                           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 x:Uid="PowerToys_Run_Image" Source="ms-appx:///Assets/Modules/PowerLauncher.png" />
            </Border>

            <StackPanel x:Name="LinksPanel"
                        Margin="0,1,0,0"
                        RelativePanel.Below="AboutImage"
                        Orientation="Vertical" >
                <HyperlinkButton NavigateUri="https://aka.ms/PowerToysOverview_PowerToysRun">
                    <TextBlock x:Uid="Module_overview" />
                </HyperlinkButton>
                <HyperlinkButton NavigateUri="https://aka.ms/powerToysGiveFeedback">
                    <TextBlock x:Uid="Give_Feedback" />
                </HyperlinkButton>

                <TextBlock x:Uid="AttributionTitle"
                           Style="{StaticResource SettingsGroupTitleStyle}"
                           Foreground="{ Binding Mode=TwoWay, Path=TextColor}"/>

                <HyperlinkButton Margin="0,-3,0,0" NavigateUri="https://github.com/Wox-launcher/Wox/">
                    <TextBlock Text="Wox"/>
                </HyperlinkButton>

                <HyperlinkButton NavigateUri="https://github.com/betsegaw/windowwalker/">
                    <TextBlock Text="Beta Tadele's Window Walker" />
                </HyperlinkButton>

            </StackPanel>
        </RelativePanel>
    </Grid>
</Page>