<Page
    x:Class="Microsoft.PowerToys.Settings.UI.Views.PowerLauncherPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:ViewModels="using:Microsoft.PowerToys.Settings.UI.ViewModels"
    xmlns:controls="using:Microsoft.PowerToys.Settings.UI.Controls"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:i="using:Microsoft.Xaml.Interactivity"
    xmlns:ic="using:Microsoft.Xaml.Interactions.Core"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:tkcontrols="using:CommunityToolkit.WinUI.Controls"
    xmlns:ui="using:CommunityToolkit.WinUI"
    AutomationProperties.LandmarkType="Main"
    mc:Ignorable="d">

    <controls:SettingsPageControl x:Uid="PowerLauncher" ModuleImageSource="ms-appx:///Assets/Settings/Modules/Run.png">
        <controls:SettingsPageControl.ModuleContent>

            <StackPanel ChildrenTransitions="{StaticResource SettingsCardsAnimations}" Orientation="Vertical">
                <tkcontrols:SettingsCard
                    x:Uid="PowerLauncher_EnablePowerLauncher"
                    HeaderIcon="{ui:BitmapIcon Source=/Assets/Settings/Icons/PowerToysRun.png}"
                    IsEnabled="{x:Bind ViewModel.IsEnabledGpoConfigured, Mode=OneWay, Converter={StaticResource BoolNegationConverter}}">
                    <ToggleSwitch x:Uid="ToggleSwitch" IsOn="{x:Bind ViewModel.EnablePowerLauncher, Mode=TwoWay}" />
                </tkcontrols:SettingsCard>
                <InfoBar
                    x:Uid="GPO_SettingIsManaged"
                    IsClosable="False"
                    IsOpen="{x:Bind ViewModel.IsEnabledGpoConfigured, Mode=OneWay}"
                    IsTabStop="{x:Bind ViewModel.IsEnabledGpoConfigured, Mode=OneWay}"
                    Severity="Informational" />

                <controls:SettingsGroup x:Uid="Shortcut" IsEnabled="{x:Bind ViewModel.EnablePowerLauncher, Mode=OneWay}">
                    <tkcontrols:SettingsExpander
                        x:Uid="Activation_Shortcut"
                        HeaderIcon="{ui:FontIcon Glyph=&#xEDA7;}"
                        IsExpanded="True">
                        <controls:ShortcutControl MinWidth="{StaticResource SettingActionControlMinWidth}" HotkeySettings="{x:Bind Path=ViewModel.OpenPowerLauncher, Mode=TwoWay}" />
                        <tkcontrols:SettingsExpander.Items>
                            <tkcontrols:SettingsCard ContentAlignment="Left">
                                <controls:CheckBoxWithDescriptionControl x:Uid="PowerLauncher_UseCentralizedKeyboardHook" IsChecked="{x:Bind ViewModel.UseCentralizedKeyboardHook, Mode=TwoWay}" />
                            </tkcontrols:SettingsCard>
                            <tkcontrols:SettingsCard ContentAlignment="Left">
                                <CheckBox x:Uid="PowerLauncher_IgnoreHotkeysInFullScreen" IsChecked="{x:Bind ViewModel.IgnoreHotkeysInFullScreen, Mode=TwoWay}" />
                            </tkcontrols:SettingsCard>
                        </tkcontrols:SettingsExpander.Items>
                    </tkcontrols:SettingsExpander>
                </controls:SettingsGroup>


                <!--<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="{x:Bind ViewModel.OverrideWinSKey, Mode=TwoWay}"
                      IsEnabled="False"
                      />-->

                <controls:SettingsGroup x:Uid="PowerLauncher_SearchResults" IsEnabled="{x:Bind ViewModel.EnablePowerLauncher, Mode=OneWay}">
                    <tkcontrols:SettingsExpander
                        x:Uid="PowerLauncher_SearchQueryResultsWithDelay"
                        HeaderIcon="{ui:FontIcon Glyph=&#xec48;}"
                        IsExpanded="True">
                        <ToggleSwitch IsOn="{x:Bind ViewModel.SearchQueryResultsWithDelay, Mode=TwoWay}" />
                        <tkcontrols:SettingsExpander.Items>
                            <tkcontrols:SettingsCard x:Uid="PowerLauncher_FastSearchInputDelayMs" IsEnabled="{x:Bind ViewModel.SearchQueryResultsWithDelay, Mode=OneWay}">
                                <NumberBox
                                    MinWidth="{StaticResource SettingActionControlMinWidth}"
                                    LargeChange="50"
                                    Maximum="500"
                                    Minimum="0"
                                    SmallChange="10"
                                    SpinButtonPlacementMode="Compact"
                                    Value="{x:Bind ViewModel.SearchInputDelayFast, Mode=TwoWay}" />
                            </tkcontrols:SettingsCard>
                            <tkcontrols:SettingsCard x:Uid="PowerLauncher_SlowSearchInputDelayMs" IsEnabled="{x:Bind ViewModel.SearchQueryResultsWithDelay, Mode=OneWay}">
                                <NumberBox
                                    MinWidth="{StaticResource SettingActionControlMinWidth}"
                                    LargeChange="50"
                                    Maximum="1000"
                                    Minimum="0"
                                    SmallChange="10"
                                    SpinButtonPlacementMode="Compact"
                                    Value="{x:Bind ViewModel.SearchInputDelay, Mode=TwoWay}" />
                            </tkcontrols:SettingsCard>
                        </tkcontrols:SettingsExpander.Items>
                    </tkcontrols:SettingsExpander>

                    <tkcontrols:SettingsExpander
                        x:Uid="PowerLauncher_MaximumNumberOfResults"
                        HeaderIcon="{ui:FontIcon Glyph=&#xec8f;}"
                        IsExpanded="True">
                        <NumberBox
                            MinWidth="{StaticResource SettingActionControlMinWidth}"
                            Minimum="1"
                            SpinButtonPlacementMode="Compact"
                            Value="{x:Bind ViewModel.MaximumNumberOfResults, Mode=TwoWay}" />
                        <tkcontrols:SettingsExpander.Items>
                            <tkcontrols:SettingsCard ContentAlignment="Left">
                                <CheckBox x:Uid="PowerLauncher_ClearInputOnLaunch" IsChecked="{x:Bind ViewModel.ClearInputOnLaunch, Mode=TwoWay}" />
                            </tkcontrols:SettingsCard>
                        </tkcontrols:SettingsExpander.Items>
                    </tkcontrols:SettingsExpander>

                    <tkcontrols:SettingsExpander
                        x:Uid="PowerLauncher_SearchQueryTuningEnabled"
                        HeaderIcon="{ui:FontIcon Glyph=&#xE8CB;}"
                        IsExpanded="True">
                        <ToggleSwitch IsOn="{x:Bind ViewModel.SearchQueryTuningEnabled, Mode=TwoWay}" />
                        <tkcontrols:SettingsExpander.Items>
                            <tkcontrols:SettingsCard x:Uid="PowerLauncher_SearchClickedItemWeight" IsEnabled="{x:Bind ViewModel.SearchQueryTuningEnabled, Mode=OneWay}">
                                <NumberBox
                                    MinWidth="{StaticResource SettingActionControlMinWidth}"
                                    LargeChange="50"
                                    Maximum="1000"
                                    Minimum="0"
                                    SmallChange="5"
                                    SpinButtonPlacementMode="Compact"
                                    Value="{x:Bind ViewModel.SearchClickedItemWeight, Mode=TwoWay}" />
                            </tkcontrols:SettingsCard>
                            <tkcontrols:SettingsCard ContentAlignment="Left" IsEnabled="{x:Bind ViewModel.SearchQueryTuningEnabled, Mode=OneWay}">
                                <controls:CheckBoxWithDescriptionControl x:Uid="PowerLauncher_WaitForSlowResults" IsChecked="{x:Bind ViewModel.SearchWaitForSlowResults, Mode=TwoWay}" />
                            </tkcontrols:SettingsCard>
                        </tkcontrols:SettingsExpander.Items>
                    </tkcontrols:SettingsExpander>

                    <tkcontrols:SettingsCard x:Uid="PowerLauncher_TabSelectsContextButtons" HeaderIcon="{ui:FontIcon Glyph=&#xE7FD;}">
                        <ToggleSwitch x:Uid="ToggleSwitch" IsOn="{x:Bind ViewModel.TabSelectsContextButtons, Mode=TwoWay}" />
                    </tkcontrols:SettingsCard>

                    <tkcontrols:SettingsCard x:Uid="PowerLauncher_UsePinyin" HeaderIcon="{ui:FontIcon Glyph=&#xE98A;}">
                        <ToggleSwitch x:Uid="ToggleSwitch" IsOn="{x:Bind ViewModel.UsePinyin, Mode=TwoWay}" />
                    </tkcontrols:SettingsCard>

                    <tkcontrols:SettingsCard x:Uid="PowerLauncher_GenerateThumbnailsFromFiles" HeaderIcon="{ui:FontIcon Glyph=&#xE91B;}">
                        <ToggleSwitch x:Uid="ToggleSwitch" IsOn="{x:Bind ViewModel.GenerateThumbnailsFromFiles, Mode=TwoWay}" />
                    </tkcontrols:SettingsCard>
                </controls:SettingsGroup>

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

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

                <controls:SettingsGroup x:Uid="Run_PositionAppearance_GroupSettings" IsEnabled="{x:Bind ViewModel.EnablePowerLauncher, Mode=OneWay}">
                    <tkcontrols: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" />
                        </ComboBox>
                    </tkcontrols:SettingsCard>

                    <tkcontrols:SettingsCard x:Uid="ColorModeHeader" HeaderIcon="{ui:FontIcon Glyph=&#xE790;}">
                        <tkcontrols:SettingsCard.Description>
                            <HyperlinkButton x:Uid="Windows_Color_Settings" Click="OpenColorsSettings_Click" />
                        </tkcontrols:SettingsCard.Description>
                        <ComboBox MinWidth="{StaticResource SettingActionControlMinWidth}" SelectedIndex="{x:Bind ViewModel.ThemeIndex, Mode=TwoWay}">
                            <ComboBoxItem x:Uid="Radio_Theme_Dark" />
                            <ComboBoxItem x:Uid="Radio_Theme_Light" />
                            <ComboBoxItem x:Uid="Radio_Theme_Default" />
                        </ComboBox>
                    </tkcontrols:SettingsCard>

                    <tkcontrols:SettingsCard x:Uid="PowerLauncher_ShowPluginKeywords" HeaderIcon="{ui:FontIcon Glyph=&#xE8FD;}">
                        <ComboBox MinWidth="{StaticResource SettingActionControlMinWidth}" SelectedIndex="{x:Bind ViewModel.ShowPluginsOverviewIndex, Mode=TwoWay}">
                            <ComboBoxItem x:Uid="ShowPluginsOverview_All" />
                            <ComboBoxItem x:Uid="ShowPluginsOverview_NonGlobal" />
                            <ComboBoxItem x:Uid="ShowPluginsOverview_None" />
                        </ComboBox>
                    </tkcontrols:SettingsCard>

                    <tkcontrols:SettingsCard x:Uid="PowerLauncher_TitleFontSize" HeaderIcon="{ui:FontIcon Glyph=&#xE8E9;}">
                        <StackPanel Orientation="Horizontal" Spacing="12">
                            <TextBlock
                                VerticalAlignment="Center"
                                AutomationProperties.AccessibilityView="Raw"
                                FontSize="12"
                                FontWeight="SemiBold"
                                Text="A" />
                            <Slider
                                x:Uid="PowerLauncher_TextFontSizeSlider"
                                LargeChange="2"
                                Maximum="24"
                                Minimum="12"
                                SmallChange="2"
                                StepFrequency="2"
                                TickFrequency="2"
                                TickPlacement="Outside"
                                Value="{x:Bind ViewModel.TitleFontSize, Mode=TwoWay}" />
                            <TextBlock
                                VerticalAlignment="Center"
                                AutomationProperties.AccessibilityView="Raw"
                                FontSize="24"
                                FontWeight="SemiBold"
                                Text="A" />
                        </StackPanel>
                    </tkcontrols:SettingsCard>
                </controls:SettingsGroup>

                <controls:SettingsGroup x:Uid="PowerLauncher_Plugins" IsEnabled="{x:Bind ViewModel.EnablePowerLauncher, Mode=OneWay}">

                    <InfoBar
                        x:Uid="Run_ConflictingKeywordInfo"
                        IsClosable="False"
                        IsOpen="{x:Bind ViewModel.EnablePowerLauncher, Mode=OneWay}"
                        IsTabStop="{x:Bind ViewModel.EnablePowerLauncher, Mode=OneWay}"
                        Severity="Informational">
                        <InfoBar.ActionButton>
                            <HyperlinkButton x:Uid="Run_ConflictingKeywordInfo_Link" NavigateUri="https://aka.ms/PowerToysOverview_PowerToysRun#direct-activation-commands" />
                        </InfoBar.ActionButton>
                    </InfoBar>

                    <tkcontrols:SettingsCard x:Uid="Run_PluginUse" HeaderIcon="{ui:FontIcon Glyph=&#xEA86;}">
                        <tkcontrols:SettingsCard.Description>
                            <StackPanel>
                                <TextBlock x:Uid="Run_PluginUseDescription" />
                                <HyperlinkButton x:Uid="Run_PluginUseFindMorePlugins" NavigateUri="https://aka.ms/powerToysRunPlugins" />
                            </StackPanel>
                        </tkcontrols:SettingsCard.Description>
                        <AutoSuggestBox
                            x:Uid="PowerLauncher_SearchList"
                            MinWidth="{StaticResource SettingActionControlMinWidth}"
                            QueryIcon="Find"
                            Text="{x:Bind ViewModel.SearchText, Mode=TwoWay}">
                            <i:Interaction.Behaviors>
                                <ic:EventTriggerBehavior EventName="TextChanged">
                                    <ic:InvokeCommandAction Command="{x:Bind ViewModel.SearchPluginsCommand}" />
                                </ic:EventTriggerBehavior>
                            </i:Interaction.Behaviors>
                        </AutoSuggestBox>
                    </tkcontrols:SettingsCard>


                    <InfoBar
                        x:Uid="GPO_SomeRunPluginsAreManaged"
                        IsClosable="False"
                        IsOpen="{x:Bind ViewModel.ShowPluginsAreGpoManagedInfo, Mode=OneWay}"
                        IsTabStop="{x:Bind ViewModel.ShowPluginsAreGpoManagedInfo, Mode=OneWay}"
                        Severity="Informational" />
                    <InfoBar
                        x:Uid="Run_AllPluginsDisabled"
                        IsClosable="False"
                        IsOpen="{x:Bind ViewModel.ShowAllPluginsDisabledWarning, Mode=OneWay}"
                        IsTabStop="{x:Bind ViewModel.ShowAllPluginsDisabledWarning, Mode=OneWay}"
                        Severity="Error" />

                    <StackPanel Orientation="Horizontal" Visibility="{x:Bind ViewModel.ShowPluginsLoadingMessage, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}">
                        <ProgressRing
                            Width="20"
                            Height="20"
                            Margin="18,18"
                            IsActive="True" />
                        <TextBlock
                            x:Uid="Run_PluginsLoading"
                            VerticalAlignment="Center"
                            Style="{ThemeResource SecondaryTextStyle}" />
                    </StackPanel>

                    <ItemsControl x:Name="PluginsListView" ItemsSource="{x:Bind Path=ViewModel.Plugins, Mode=OneWay}">
                        <ItemsControl.ItemsPanel>
                            <ItemsPanelTemplate>
                                <StackPanel Spacing="2" />
                            </ItemsPanelTemplate>
                        </ItemsControl.ItemsPanel>
                        <ItemsControl.ItemTemplate>
                            <DataTemplate x:DataType="ViewModels:PowerLauncherPluginViewModel" x:DefaultBindMode="OneWay">
                                <Grid>
                                    <tkcontrols:SettingsExpander Description="{x:Bind Description}" Header="{x:Bind Path=Name}">
                                        <tkcontrols:SettingsExpander.HeaderIcon>
                                            <BitmapIcon UriSource="{x:Bind IconPath}" />
                                        </tkcontrols:SettingsExpander.HeaderIcon>
                                        <StackPanel Orientation="Horizontal" Spacing="16">
                                            <!-- todo(Stefan): InfoBadge not available
                                                        <InfoBadge AutomationProperties.AccessibilityView="Raw"
                                                                        Visibility="{x:Bind ShowBadgeOnPluginSettingError}"
                                                                        Style="{StaticResource CriticalIconInfoBadgeStyle}" />
                                            -->

                                            <!--  Temporary badge replacement for InfoBadge control (htcfreek). (Normally you need one grid per icon group. But if you want to show two badges at the same place in a StackPanel you have to put all FontIcons into the same Grid.)  -->
                                            <Grid>
                                                <!--  Error badge  -->
                                                <FontIcon
                                                    FontFamily="{StaticResource SymbolThemeFontFamily}"
                                                    Foreground="{ThemeResource InfoBarErrorSeverityIconBackground}"
                                                    Glyph="{StaticResource InfoBarIconBackgroundGlyph}"
                                                    Visibility="{x:Bind ShowBadgeOnPluginSettingError}" />
                                                <FontIcon
                                                    FontFamily="{StaticResource SymbolThemeFontFamily}"
                                                    Foreground="{ThemeResource InfoBarErrorSeverityIconForeground}"
                                                    Glyph="{StaticResource InfoBarErrorIconGlyph}"
                                                    Visibility="{x:Bind ShowBadgeOnPluginSettingError}" />
                                            </Grid>

                                            <ToggleSwitch
                                                x:Uid="PowerLauncher_EnablePluginToggle"
                                                IsEnabled="{x:Bind Path=EnabledGpoRuleIsConfigured, Converter={StaticResource BoolNegationConverter}, Mode=OneWay}"
                                                IsOn="{x:Bind Path=Disabled, Converter={StaticResource BoolNegationConverter}, Mode=TwoWay}" />

                                        </StackPanel>
                                        <tkcontrols:SettingsExpander.Items>
                                            <tkcontrols:SettingsCard x:Uid="PowerLauncher_ActionKeyword" IsEnabled="{x:Bind Enabled, Mode=OneWay}">
                                                <TextBox MinWidth="{StaticResource SettingActionControlMinWidth}" Text="{x:Bind ActionKeyword, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                                            </tkcontrols:SettingsCard>
                                            <tkcontrols:SettingsCard
                                                Padding="0,-4,0,0"
                                                HorizontalContentAlignment="Left"
                                                Background="{ThemeResource SystemFillColorCriticalBackgroundBrush}"
                                                ContentAlignment="Vertical"
                                                Visibility="{x:Bind ShowNotAccessibleWarning, Converter={StaticResource BoolToVisibilityConverter}}">
                                                <InfoBar
                                                    x:Uid="Run_NotAccessibleWarning"
                                                    Margin="3,0,0,0"
                                                    Background="Transparent"
                                                    BorderBrush="Transparent"
                                                    IsClosable="False"
                                                    IsOpen="True"
                                                    IsTabStop="{x:Bind ShowNotAccessibleWarning}"
                                                    Severity="Error" />
                                            </tkcontrols:SettingsCard>
                                            <tkcontrols:SettingsCard ContentAlignment="Left" IsEnabled="{x:Bind Enabled, Mode=OneWay}">
                                                <CheckBox
                                                    Margin="0,-8,0,0"
                                                    AutomationProperties.Name="{Binding ElementName=IncludeInGlobalResultTitle, Path=Text}"
                                                    IsChecked="{x:Bind IsGlobal, Mode=TwoWay}">
                                                    <StackPanel Orientation="Vertical">
                                                        <TextBlock x:Name="IncludeInGlobalResultTitle" x:Uid="PowerLauncher_IncludeInGlobalResultTitle" />
                                                        <controls:IsEnabledTextBlock
                                                            x:Uid="PowerLauncher_IncludeInGlobalResultDescription"
                                                            FontSize="{StaticResource SecondaryTextFontSize}"
                                                            Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
                                                    </StackPanel>
                                                </CheckBox>
                                            </tkcontrols:SettingsCard>
                                            <tkcontrols:SettingsCard x:Uid="PowerLauncher_PluginWeightBoost" IsEnabled="{x:Bind IsGlobalAndEnabled, Mode=OneWay}">
                                                <NumberBox
                                                    MinWidth="{StaticResource SettingActionControlMinWidth}"
                                                    LargeChange="50"
                                                    Maximum="1000"
                                                    Minimum="-1000"
                                                    SmallChange="10"
                                                    SpinButtonPlacementMode="Compact"
                                                    Value="{x:Bind WeightBoost, Mode=TwoWay}" />
                                            </tkcontrols:SettingsCard>
                                            <tkcontrols:SettingsCard
                                                MinHeight="0"
                                                HorizontalContentAlignment="Stretch"
                                                ContentAlignment="Vertical">
                                                <tkcontrols:SettingsCard.Resources>
                                                    <Thickness x:Key="SettingsCardPadding">0</Thickness>
                                                    <Thickness x:Key="SettingsExpanderItemPadding">0,0,0,0</Thickness>
                                                </tkcontrols:SettingsCard.Resources>
                                                <ItemsControl
                                                    Margin="0,-6,0,0"
                                                    HorizontalAlignment="Stretch"
                                                    HorizontalContentAlignment="Stretch"
                                                    IsEnabled="{x:Bind Enabled, Mode=OneWay}"
                                                    ItemsSource="{x:Bind Path=AdditionalOptions}">
                                                    <ItemsControl.ItemTemplate>
                                                        <DataTemplate x:DataType="ViewModels:PluginAdditionalOptionViewModel">
                                                            <StackPanel HorizontalAlignment="Stretch" Orientation="Vertical">
                                                                <!--  Checkbox setting  -->
                                                                <tkcontrols:SettingsCard
                                                                    MinHeight="0"
                                                                    Margin="1"
                                                                    Padding="0,6,0,12"
                                                                    Background="Transparent"
                                                                    BorderThickness="0,0,0,0"
                                                                    ContentAlignment="Left"
                                                                    CornerRadius="0"
                                                                    Visibility="{x:Bind Path=ShowCheckBox, Converter={StaticResource BoolToVisibilityConverter}}">
                                                                    <controls:CheckBoxWithDescriptionControl
                                                                        Margin="56,0,0,0"
                                                                        Description="{x:Bind Path=DisplayDescription}"
                                                                        Header="{x:Bind Path=DisplayLabel}"
                                                                        IsChecked="{x:Bind Value, Mode=TwoWay}" />
                                                                </tkcontrols:SettingsCard>
                                                                <!--  ComboBox setting  -->
                                                                <tkcontrols:SettingsCard
                                                                    MinHeight="0"
                                                                    Margin="56,8,45,8"
                                                                    Background="Transparent"
                                                                    BorderThickness="0,0,0,0"
                                                                    CornerRadius="0"
                                                                    Description="{x:Bind Path=DisplayDescription}"
                                                                    Header="{x:Bind Path=DisplayLabel}"
                                                                    Visibility="{x:Bind Path=ShowComboBox, Converter={StaticResource BoolToVisibilityConverter}}">
                                                                    <ComboBox
                                                                        MinWidth="{StaticResource SettingActionControlMinWidth}"
                                                                        DisplayMemberPath="Key"
                                                                        ItemsSource="{x:Bind Path=ComboBoxItems}"
                                                                        SelectedValue="{x:Bind ComboBoxValue, Mode=TwoWay}"
                                                                        SelectedValuePath="Value" />
                                                                </tkcontrols:SettingsCard>
                                                                <!--  TextBox setting  -->
                                                                <tkcontrols:SettingsCard
                                                                    MinHeight="0"
                                                                    Margin="56,8,45,8"
                                                                    Background="Transparent"
                                                                    BorderThickness="0,0,0,0"
                                                                    CornerRadius="0"
                                                                    Description="{x:Bind Path=DisplayDescription}"
                                                                    Header="{x:Bind Path=DisplayLabel}"
                                                                    Visibility="{x:Bind Path=ShowTextBox, Converter={StaticResource BoolToVisibilityConverter}}">
                                                                    <TextBox
                                                                        MinWidth="{StaticResource SettingActionControlMinWidth}"
                                                                        MaxWidth="450"
                                                                        MaxLength="{x:Bind TextBoxMaxLength, Mode=OneWay}"
                                                                        PlaceholderText="{x:Bind Path=PlaceholderText}"
                                                                        Text="{x:Bind TextValue, Mode=TwoWay}" />
                                                                </tkcontrols:SettingsCard>
                                                                <!--  MultilineTextBox setting  -->
                                                                <tkcontrols:SettingsCard
                                                                    MinHeight="0"
                                                                    Margin="56,8,45,8"
                                                                    HorizontalContentAlignment="Stretch"
                                                                    Background="Transparent"
                                                                    BorderThickness="0,0,0,0"
                                                                    ContentAlignment="Vertical"
                                                                    CornerRadius="0"
                                                                    Description="{x:Bind Path=DisplayDescription}"
                                                                    Header="{x:Bind Path=DisplayLabel}"
                                                                    Visibility="{x:Bind Path=ShowMultilineTextBox, Converter={StaticResource BoolToVisibilityConverter}}">
                                                                    <TextBox
                                                                        MinWidth="{StaticResource SettingActionControlMinWidth}"
                                                                        MinHeight="160"
                                                                        AcceptsReturn="True"
                                                                        PlaceholderText="{x:Bind Path=PlaceholderText}"
                                                                        ScrollViewer.IsVerticalRailEnabled="True"
                                                                        ScrollViewer.VerticalScrollBarVisibility="Visible"
                                                                        ScrollViewer.VerticalScrollMode="Enabled"
                                                                        Text="{x:Bind TextValue, Mode=TwoWay}" />
                                                                </tkcontrols:SettingsCard>
                                                                <!--  NumberBox setting  -->
                                                                <tkcontrols:SettingsCard
                                                                    MinHeight="0"
                                                                    Margin="56,8,45,8"
                                                                    Background="Transparent"
                                                                    BorderThickness="0,0,0,0"
                                                                    CornerRadius="0"
                                                                    Description="{x:Bind Path=DisplayDescription}"
                                                                    Header="{x:Bind Path=DisplayLabel}"
                                                                    Visibility="{x:Bind Path=ShowNumberBox, Converter={StaticResource BoolToVisibilityConverter}}">
                                                                    <NumberBox
                                                                        MinWidth="{StaticResource SettingActionControlMinWidth}"
                                                                        LargeChange="{x:Bind NumberBoxLargeChange, Mode=OneWay}"
                                                                        Maximum="{x:Bind NumberBoxMax, Mode=OneWay}"
                                                                        Minimum="{x:Bind NumberBoxMin, Mode=OneWay}"
                                                                        SmallChange="{x:Bind NumberBoxSmallChange, Mode=OneWay}"
                                                                        SpinButtonPlacementMode="Compact"
                                                                        Value="{x:Bind NumberValue, Mode=TwoWay}" />
                                                                </tkcontrols:SettingsCard>
                                                                <!--  Checkbox And ComboBox setting  -->
                                                                <StackPanel
                                                                    HorizontalAlignment="Stretch"
                                                                    Orientation="Vertical"
                                                                    Visibility="{x:Bind Path=ShowCheckboxAndCombobox, Converter={StaticResource BoolToVisibilityConverter}}">
                                                                    <tkcontrols:SettingsCard
                                                                        MinHeight="0"
                                                                        Margin="1"
                                                                        Padding="0,6,0,4"
                                                                        Background="Transparent"
                                                                        BorderThickness="0,0,0,0"
                                                                        ContentAlignment="Left"
                                                                        CornerRadius="0">
                                                                        <controls:CheckBoxWithDescriptionControl
                                                                            Margin="56,0,0,0"
                                                                            Description="{x:Bind Path=DisplayDescription}"
                                                                            Header="{x:Bind Path=DisplayLabel}"
                                                                            IsChecked="{x:Bind Value, Mode=TwoWay}" />
                                                                    </tkcontrols:SettingsCard>
                                                                    <tkcontrols:SettingsCard
                                                                        MinHeight="0"
                                                                        Margin="84,0,45,8"
                                                                        Background="Transparent"
                                                                        BorderThickness="0,0,0,0"
                                                                        CornerRadius="0"
                                                                        Description="{x:Bind Path=SecondDisplayDescription}"
                                                                        Header="{x:Bind Path=SecondDisplayLabel}"
                                                                        IsEnabled="{x:Bind SecondSettingIsEnabled, Mode=OneWay}">
                                                                        <ComboBox
                                                                            MinWidth="{StaticResource SettingActionControlMinWidth}"
                                                                            DisplayMemberPath="Key"
                                                                            ItemsSource="{x:Bind Path=ComboBoxItems}"
                                                                            SelectedValue="{x:Bind ComboBoxValue, Mode=TwoWay}"
                                                                            SelectedValuePath="Value" />
                                                                    </tkcontrols:SettingsCard>
                                                                </StackPanel>
                                                                <!--  Checkbox And TextBox setting  -->
                                                                <StackPanel
                                                                    HorizontalAlignment="Stretch"
                                                                    Orientation="Vertical"
                                                                    Visibility="{x:Bind Path=ShowCheckboxAndTextbox, Converter={StaticResource BoolToVisibilityConverter}}">
                                                                    <tkcontrols:SettingsCard
                                                                        MinHeight="0"
                                                                        Margin="1"
                                                                        Padding="0,6,0,4"
                                                                        Background="Transparent"
                                                                        BorderThickness="0,0,0,0"
                                                                        ContentAlignment="Left"
                                                                        CornerRadius="0">
                                                                        <controls:CheckBoxWithDescriptionControl
                                                                            Margin="56,0,0,0"
                                                                            Description="{x:Bind Path=DisplayDescription}"
                                                                            Header="{x:Bind Path=DisplayLabel}"
                                                                            IsChecked="{x:Bind Value, Mode=TwoWay}" />
                                                                    </tkcontrols:SettingsCard>
                                                                    <tkcontrols:SettingsCard
                                                                        MinHeight="0"
                                                                        Margin="84,0,45,8"
                                                                        Background="Transparent"
                                                                        BorderThickness="0,0,0,0"
                                                                        CornerRadius="0"
                                                                        Description="{x:Bind Path=SecondDisplayDescription}"
                                                                        Header="{x:Bind Path=SecondDisplayLabel}"
                                                                        IsEnabled="{x:Bind SecondSettingIsEnabled, Mode=OneWay}">
                                                                        <TextBox
                                                                            MinWidth="{StaticResource SettingActionControlMinWidth}"
                                                                            MaxWidth="450"
                                                                            MaxLength="{x:Bind TextBoxMaxLength, Mode=OneWay}"
                                                                            PlaceholderText="{x:Bind Path=PlaceholderText}"
                                                                            Text="{x:Bind TextValue, Mode=TwoWay}" />
                                                                    </tkcontrols:SettingsCard>
                                                                </StackPanel>
                                                                <!--  Checkbox And MultilineTextBox setting  -->
                                                                <StackPanel
                                                                    HorizontalAlignment="Stretch"
                                                                    Orientation="Vertical"
                                                                    Visibility="{x:Bind Path=ShowCheckboxAndMultilineTextbox, Converter={StaticResource BoolToVisibilityConverter}}">
                                                                    <tkcontrols:SettingsCard
                                                                        MinHeight="0"
                                                                        Margin="1"
                                                                        Padding="0,6,0,4"
                                                                        Background="Transparent"
                                                                        BorderThickness="0,0,0,0"
                                                                        ContentAlignment="Left"
                                                                        CornerRadius="0">
                                                                        <controls:CheckBoxWithDescriptionControl
                                                                            Margin="56,0,0,0"
                                                                            Description="{x:Bind Path=DisplayDescription}"
                                                                            Header="{x:Bind Path=DisplayLabel}"
                                                                            IsChecked="{x:Bind Value, Mode=TwoWay}" />
                                                                    </tkcontrols:SettingsCard>
                                                                    <tkcontrols:SettingsCard
                                                                        MinHeight="0"
                                                                        Margin="84,0,45,8"
                                                                        HorizontalContentAlignment="Stretch"
                                                                        Background="Transparent"
                                                                        BorderThickness="0,0,0,0"
                                                                        ContentAlignment="Vertical"
                                                                        CornerRadius="0"
                                                                        Description="{x:Bind Path=SecondDisplayDescription}"
                                                                        Header="{x:Bind Path=SecondDisplayLabel}"
                                                                        IsEnabled="{x:Bind SecondSettingIsEnabled, Mode=OneWay}">
                                                                        <TextBox
                                                                            MinWidth="{StaticResource SettingActionControlMinWidth}"
                                                                            MinHeight="160"
                                                                            AcceptsReturn="True"
                                                                            PlaceholderText="{x:Bind Path=PlaceholderText}"
                                                                            ScrollViewer.IsVerticalRailEnabled="True"
                                                                            ScrollViewer.VerticalScrollBarVisibility="Visible"
                                                                            ScrollViewer.VerticalScrollMode="Enabled"
                                                                            Text="{x:Bind TextValue, Mode=TwoWay}" />
                                                                    </tkcontrols:SettingsCard>
                                                                </StackPanel>
                                                                <!--  Checkbox And NumberBox setting  -->
                                                                <StackPanel
                                                                    HorizontalAlignment="Stretch"
                                                                    Orientation="Vertical"
                                                                    Visibility="{x:Bind Path=ShowCheckboxAndNumberbox, Converter={StaticResource BoolToVisibilityConverter}}">
                                                                    <tkcontrols:SettingsCard
                                                                        MinHeight="0"
                                                                        Margin="1"
                                                                        Padding="0,6,0,4"
                                                                        Background="Transparent"
                                                                        BorderThickness="0,0,0,0"
                                                                        ContentAlignment="Left"
                                                                        CornerRadius="0">
                                                                        <controls:CheckBoxWithDescriptionControl
                                                                            Margin="56,0,0,0"
                                                                            Description="{x:Bind Path=DisplayDescription}"
                                                                            Header="{x:Bind Path=DisplayLabel}"
                                                                            IsChecked="{x:Bind Value, Mode=TwoWay}" />
                                                                    </tkcontrols:SettingsCard>
                                                                    <tkcontrols:SettingsCard
                                                                        MinHeight="0"
                                                                        Margin="84,0,45,8"
                                                                        Background="Transparent"
                                                                        BorderThickness="0,0,0,0"
                                                                        CornerRadius="0"
                                                                        Description="{x:Bind Path=SecondDisplayDescription}"
                                                                        Header="{x:Bind Path=SecondDisplayLabel}"
                                                                        IsEnabled="{x:Bind SecondSettingIsEnabled, Mode=OneWay}">
                                                                        <NumberBox
                                                                            MinWidth="{StaticResource SettingActionControlMinWidth}"
                                                                            LargeChange="{x:Bind NumberBoxLargeChange, Mode=OneWay}"
                                                                            Maximum="{x:Bind NumberBoxMax, Mode=OneWay}"
                                                                            Minimum="{x:Bind NumberBoxMin, Mode=OneWay}"
                                                                            SmallChange="{x:Bind NumberBoxSmallChange, Mode=OneWay}"
                                                                            SpinButtonPlacementMode="Compact"
                                                                            Value="{x:Bind NumberValue, Mode=TwoWay}" />
                                                                    </tkcontrols:SettingsCard>
                                                                </StackPanel>
                                                                <!--  Separator line  -->
                                                                <Rectangle
                                                                    Height="1"
                                                                    HorizontalAlignment="Stretch"
                                                                    Fill="{ThemeResource CardStrokeColorDefaultBrush}" />
                                                            </StackPanel>
                                                        </DataTemplate>
                                                    </ItemsControl.ItemTemplate>
                                                </ItemsControl>
                                            </tkcontrols:SettingsCard>
                                            <tkcontrols:SettingsCard
                                                MinHeight="0"
                                                BorderThickness="0"
                                                ContentAlignment="Right">
                                                <TextBlock Opacity="{x:Bind DisabledOpacity}" Style="{ThemeResource SecondaryTextStyle}">
                                                    <Run x:Uid="PowerLauncher_AuthoredBy" />
                                                    <Run FontWeight="SemiBold" Text="{x:Bind Author}" />
                                                </TextBlock>
                                            </tkcontrols:SettingsCard>
                                        </tkcontrols:SettingsExpander.Items>
                                    </tkcontrols:SettingsExpander>
                                </Grid>
                            </DataTemplate>
                        </ItemsControl.ItemTemplate>
                    </ItemsControl>
                </controls:SettingsGroup>
            </StackPanel>

        </controls:SettingsPageControl.ModuleContent>
        <controls:SettingsPageControl.PrimaryLinks>
            <controls:PageLink x:Uid="LearnMore_Run" Link="https://aka.ms/PowerToysOverview_PowerToysRun" />
            <controls:PageLink x:Uid="Run_FindMorePlugins" Link="https://aka.ms/powerToysRunPlugins" />
        </controls:SettingsPageControl.PrimaryLinks>
        <controls:SettingsPageControl.SecondaryLinks>
            <controls:PageLink Link="https://github.com/Wox-launcher/Wox/" Text="Wox" />
            <controls:PageLink Link="https://github.com/betsegaw/windowwalker/" Text="Beta Tadele's Window Walker" />
        </controls:SettingsPageControl.SecondaryLinks>
    </controls:SettingsPageControl>
</Page>