<?xml version="1.0" encoding="utf-8" ?>
<Page
    x:Class="Microsoft.CmdPal.UI.Settings.GeneralPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:controls="using:CommunityToolkit.WinUI.Controls"
    xmlns:converters="using:CommunityToolkit.WinUI.Converters"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="using:Microsoft.CmdPal.UI.Settings"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:ptControls="using:Microsoft.CmdPal.UI.Controls"
    xmlns:ptcontrols="using:Microsoft.PowerToys.Common.UI.Controls"
    xmlns:ui="using:CommunityToolkit.WinUI"
    xmlns:viewModels="using:Microsoft.CmdPal.UI.ViewModels"
    mc:Ignorable="d">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <ScrollViewer Grid.Row="1">
            <Grid Padding="16,0,16,16">
                <StackPanel
                    MaxWidth="1000"
                    HorizontalAlignment="Stretch"
                    Spacing="{StaticResource SettingsCardSpacing}">

                    <!--
                        I got these from the samples, but they break XAML hot-reloading,
                        so I commented them out.
                    -->

                    <!--<StackPanel.ChildrenTransitions>
                  <EntranceThemeTransition FromVerticalOffset="50" />
                  <RepositionThemeTransition IsStaggeringEnabled="False" />
              </StackPanel.ChildrenTransitions>-->

                    <!--  'Activation' section  -->
                    <HyperlinkButton
                        x:Uid="CmdPal_LearnMore"
                        Padding="0"
                        FontWeight="SemiBold"
                        NavigateUri="https://aka.ms/cmdpal" />

                    <TextBlock x:Uid="ActivationSettingsHeader" Style="{StaticResource SettingsSectionHeaderTextBlockStyle}" />
                    <controls:SettingsExpander
                        x:Uid="Settings_GeneralPage_ActivationKey_SettingsExpander"
                        HeaderIcon="{ui:FontIcon Glyph=&#xEDA7;}"
                        IsExpanded="True">
                        <ptControls:ShortcutControl HotkeySettings="{x:Bind viewModel.Hotkey, Mode=TwoWay}" />
                        <controls:SettingsExpander.Items>
                            <controls:SettingsCard ContentAlignment="Left">
                                <ptcontrols:CheckBoxWithDescriptionControl x:Uid="Settings_GeneralPage_LowLevelHook_SettingsCard" IsChecked="{x:Bind viewModel.UseLowLevelGlobalHotkey, Mode=TwoWay}" />
                            </controls:SettingsCard>
                            <controls:SettingsCard ContentAlignment="Left">
                                <ptcontrols:CheckBoxWithDescriptionControl x:Uid="Settings_GeneralPage_IgnoreShortcutWhenFullscreen_SettingsCard" IsChecked="{x:Bind viewModel.IgnoreShortcutWhenFullscreen, Mode=TwoWay}" />
                            </controls:SettingsCard>
                            <controls:SettingsCard ContentAlignment="Left">
                                <ptcontrols:CheckBoxWithDescriptionControl x:Uid="Settings_GeneralPage_IgnoreShortcutWhenBusy_SettingsCard" IsChecked="{x:Bind viewModel.IgnoreShortcutWhenBusy, Mode=TwoWay}" />
                            </controls:SettingsCard>
                            <controls:SettingsCard ContentAlignment="Left">
                                <ptcontrols:CheckBoxWithDescriptionControl x:Uid="Settings_GeneralPage_AllowBreakthroughShortcut_SettingsCard" IsChecked="{x:Bind viewModel.AllowBreakthroughShortcut, Mode=TwoWay}" />
                            </controls:SettingsCard>
                        </controls:SettingsExpander.Items>
                        <controls:SettingsExpander.ItemsFooter>
                            <InfoBar
                                IsClosable="False"
                                IsOpen="{x:Bind IsNotificationStateSuppressing, Mode=OneWay}"
                                Message="{x:Bind NotificationStateMessage, Mode=OneWay}"
                                Severity="Warning" />
                        </controls:SettingsExpander.ItemsFooter>
                    </controls:SettingsExpander>
                    <controls:SettingsCard x:Uid="Settings_GeneralPage_AutoGoHome_SettingsCard" HeaderIcon="{ui:FontIcon Glyph=&#xE80F;}">
                        <ComboBox MinWidth="{StaticResource SettingActionControlMinWidth}" SelectedIndex="{x:Bind viewModel.AutoGoBackIntervalIndex, Mode=TwoWay}">
                            <ComboBoxItem x:Uid="Settings_GeneralPage_AutoGoHome_Item_Never" />
                            <ComboBoxItem x:Uid="Settings_GeneralPage_AutoGoHome_Item_Immediately" />
                            <ComboBoxItem x:Uid="Settings_GeneralPage_AutoGoHome_Item_After10Seconds" />
                            <ComboBoxItem x:Uid="Settings_GeneralPage_AutoGoHome_Item_After20Seconds" />
                            <ComboBoxItem x:Uid="Settings_GeneralPage_AutoGoHome_Item_After30Seconds" />
                            <ComboBoxItem x:Uid="Settings_GeneralPage_AutoGoHome_Item_After60Seconds" />
                            <ComboBoxItem x:Uid="Settings_GeneralPage_AutoGoHome_Item_After90Seconds" />
                            <ComboBoxItem x:Uid="Settings_GeneralPage_AutoGoHome_Item_After120Seconds" />
                            <ComboBoxItem x:Uid="Settings_GeneralPage_AutoGoHome_Item_After180Seconds" />
                        </ComboBox>
                    </controls:SettingsCard>
                    <controls:SettingsCard x:Uid="Settings_GeneralPage_HighlightSearch_SettingsCard" HeaderIcon="{ui:FontIcon Glyph=&#xE933;}">
                        <ToggleSwitch IsOn="{x:Bind viewModel.HighlightSearchOnActivate, Mode=TwoWay}" />
                    </controls:SettingsCard>
                    <controls:SettingsCard x:Uid="Settings_GeneralPage_KeepPreviousQuery_SettingsCard" HeaderIcon="{ui:FontIcon Glyph=&#xE81C;}">
                        <ToggleSwitch IsOn="{x:Bind viewModel.KeepPreviousQuery, Mode=TwoWay}" />
                    </controls:SettingsCard>
                    <controls:SettingsCard x:Uid="Run_PositionHeader" HeaderIcon="{ui:FontIcon Glyph=&#xe78b;}">
                        <ComboBox MinWidth="{StaticResource SettingActionControlMinWidth}" SelectedIndex="{x:Bind viewModel.MonitorPositionIndex, Mode=TwoWay}">
                            <ComboBoxItem x:Uid="Run_Radio_Position_Cursor" />
                            <ComboBoxItem x:Uid="Run_Radio_Position_Primary_Monitor" />
                            <ComboBoxItem x:Uid="Run_Radio_Position_Focus" />
                            <ComboBoxItem x:Uid="Run_Radio_Position_In_Place" />
                            <ComboBoxItem x:Uid="Run_Radio_Position_LastPosition" />
                        </ComboBox>
                    </controls:SettingsCard>

                    <!--  'Behavior' section  -->

                    <TextBlock x:Uid="BehaviorSettingsHeader" Style="{StaticResource SettingsSectionHeaderTextBlockStyle}" />

                    <controls:SettingsCard x:Uid="Settings_GeneralPage_ShowSystemTrayIcon_SettingsCard" HeaderIcon="{ui:FontIcon Glyph=&#xE75B;}">
                        <ToggleSwitch IsOn="{x:Bind viewModel.ShowSystemTrayIcon, Mode=TwoWay}" />
                    </controls:SettingsCard>

                    <!--  'For Developers' section  -->

                    <TextBlock x:Uid="ForDevelopersSettingsHeader" Style="{StaticResource SettingsSectionHeaderTextBlockStyle}" />

                    <controls:SettingsCard x:Uid="Settings_GeneralPage_AllowExternalReload_SettingsCard" HeaderIcon="{ui:FontIcon Glyph=&#xE777;}">
                        <ToggleSwitch IsOn="{x:Bind viewModel.AllowExternalReload, Mode=TwoWay}" />
                    </controls:SettingsCard>

                    <!--  'About' section  -->

                    <TextBlock x:Uid="AboutSettingsHeader" Style="{StaticResource SettingsSectionHeaderTextBlockStyle}" />

                    <controls:SettingsExpander x:Uid="Settings_GeneralPage_About_SettingsExpander" HeaderIcon="{ui:BitmapIcon Source=ms-appx:///Assets/StoreLogo.png}">
                        <TextBlock
                            Foreground="{ThemeResource TextFillColorSecondaryBrush}"
                            IsTextSelectionEnabled="True"
                            Text="{x:Bind ApplicationVersion}" />
                        <controls:SettingsExpander.Items>
                            <controls:SettingsCard HorizontalContentAlignment="Left" ContentAlignment="Left">
                                <StackPanel Margin="-12,0,0,0" Orientation="Vertical">
                                    <HyperlinkButton x:Uid="Settings_GeneralPage_About_GithubLink_Hyperlink" NavigateUri="https://go.microsoft.com/fwlink/?linkid=2310837" />
                                    <HyperlinkButton x:Uid="Settings_GeneralPage_About_SDKDocs_Hyperlink" NavigateUri="https://aka.ms/cmdpalextensions-devdocs" />
                                </StackPanel>
                            </controls:SettingsCard>
                        </controls:SettingsExpander.Items>
                    </controls:SettingsExpander>
                    <HyperlinkButton
                        x:Uid="Settings_GeneralPage_SendFeedback_Hyperlink"
                        Margin="0,8,0,0"
                        NavigateUri="https://go.microsoft.com/fwlink/?linkid=2310638" />
                </StackPanel>
            </Grid>
        </ScrollViewer>
    </Grid>
</Page>
