Flow.Launcher/Flow.Launcher/SettingPages/Views/SettingsPaneHotkey.xaml
2025-10-05 20:04:44 +08:00

521 lines
26 KiB
XML

<ui:Page
x:Class="Flow.Launcher.SettingPages.Views.SettingsPaneHotkey"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:cc="clr-namespace:Flow.Launcher.Resources.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:flowlauncher="clr-namespace:Flow.Launcher"
xmlns:ikw="http://schemas.inkore.net/lib/ui/wpf"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern"
xmlns:userSettings="clr-namespace:Flow.Launcher.Infrastructure.UserSettings;assembly=Flow.Launcher.Infrastructure"
xmlns:viewModels="clr-namespace:Flow.Launcher.SettingPages.ViewModels"
Title="Hotkey"
d:DataContext="{d:DesignInstance viewModels:SettingsPaneHotkeyViewModel}"
d:DesignHeight="450"
d:DesignWidth="800"
mc:Ignorable="d">
<ui:ScrollViewerEx
Padding="0 0 6 0"
FontSize="14"
VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.ScrollUnit="Pixel">
<StackPanel Margin="5 18 18 10">
<TextBlock
Margin="0 5 0 6"
FontSize="30"
Style="{StaticResource PageTitle}"
Text="{DynamicResource hotkeys}"
TextAlignment="left" />
<ui:SettingsCard
Margin="0 8 0 0"
Description="{DynamicResource flowlauncherHotkeyToolTip}"
Header="{DynamicResource flowlauncherHotkey}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xeda7;" />
</ui:SettingsCard.HeaderIcon>
<flowlauncher:HotkeyControl
DefaultHotkey="Alt+Space"
Type="Hotkey"
ValidateKeyGesture="True"
WindowTitle="{DynamicResource flowlauncherHotkey}" />
</ui:SettingsCard>
<ui:SettingsCard
Margin="0 4 0 0"
Description="{DynamicResource previewHotkeyToolTip}"
Header="{DynamicResource previewHotkey}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe8a1;" />
</ui:SettingsCard.HeaderIcon>
<flowlauncher:HotkeyControl
DefaultHotkey="F1"
Type="PreviewHotkey"
ValidateKeyGesture="False"
WindowTitle="{DynamicResource previewHotkey}" />
</ui:SettingsCard>
<ui:SettingsCard
Margin="0 14 0 0"
Description="{DynamicResource openResultModifiersToolTip}"
Header="{DynamicResource openResultModifiers}">
<ComboBox
Width="120"
FontSize="14"
ItemsSource="{Binding OpenResultModifiersList}"
SelectedValue="{Binding Settings.OpenResultModifiers}" />
</ui:SettingsCard>
<ui:SettingsCard
Margin="0 4 0 0"
Description="{DynamicResource showOpenResultHotkeyToolTip}"
Header="{DynamicResource showOpenResultHotkey}">
<ui:ToggleSwitch
IsOn="{Binding Settings.ShowOpenResultHotkey}"
OffContent="{DynamicResource disable}"
OnContent="{DynamicResource enable}" />
</ui:SettingsCard>
<ui:SettingsCard
Margin="0 14 0 0"
Description="{DynamicResource dialogJumpHotkeyToolTip}"
Header="{DynamicResource dialogJumpHotkey}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xE8AB;" />
</ui:SettingsCard.HeaderIcon>
<flowlauncher:HotkeyControl
DefaultHotkey="Alt+G"
Type="DialogJumpHotkey"
ValidateKeyGesture="False"
WindowTitle="{DynamicResource dialogJumpHotkey}" />
</ui:SettingsCard>
<ui:SettingsExpander
Margin="0 14 0 0"
Description="{DynamicResource hotkeyPresetsToolTip}"
Header="{DynamicResource hotkeyPresets}">
<ui:SettingsExpander.HeaderIcon>
<ui:FontIcon Glyph="&#xf0e2;" />
</ui:SettingsExpander.HeaderIcon>
<ui:SettingsExpander.Items>
<ui:SettingsCard Header="{DynamicResource HotkeyUpDownDesc}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xede3;" />
</ui:SettingsCard.HeaderIcon>
<cc:HotkeyDisplay Keys="←+→" />
</ui:SettingsCard>
<ui:SettingsCard Header="{DynamicResource HotkeyLeftRightDesc}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xEC8F;" />
</ui:SettingsCard.HeaderIcon>
<cc:HotkeyDisplay Keys="↑+↓" />
</ui:SettingsCard>
<ui:SettingsCard Header="{DynamicResource HotkeyESCDesc}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xE72B;" />
</ui:SettingsCard.HeaderIcon>
<cc:HotkeyDisplay Keys="ESC" />
</ui:SettingsCard>
<ui:SettingsCard Header="{DynamicResource HotkeyRunDesc}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xE8A7;" />
</ui:SettingsCard.HeaderIcon>
<cc:HotkeyDisplay Keys="ENTER" />
</ui:SettingsCard>
<ui:SettingsCard Header="{DynamicResource OpenContextMenuHotkey}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xede3;" />
</ui:SettingsCard.HeaderIcon>
<cc:HotkeyDisplay Keys="Shift+Enter" />
</ui:SettingsCard>
<ui:SettingsCard Header="{DynamicResource OpenContextMenuHotkey}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xede3;" />
</ui:SettingsCard.HeaderIcon>
<flowlauncher:HotkeyControl
DefaultHotkey="Ctrl+I"
Type="OpenContextMenuHotkey"
ValidateKeyGesture="False" />
</ui:SettingsCard>
<ui:SettingsCard Header="{DynamicResource ToggleHistoryHotkey}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xf738;" />
</ui:SettingsCard.HeaderIcon>
<flowlauncher:HotkeyControl
DefaultHotkey="Ctrl+H"
Type="OpenHistoryHotkey"
ValidateKeyGesture="False" />
</ui:SettingsCard>
<ui:SettingsCard Header="{DynamicResource SettingWindowHotkey}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe713;" />
</ui:SettingsCard.HeaderIcon>
<flowlauncher:HotkeyControl
DefaultHotkey="Ctrl+I"
Type="SettingWindowHotkey"
ValidateKeyGesture="False" />
</ui:SettingsCard>
<ui:SettingsCard Description="{DynamicResource ReloadPluginHotkeyToolTip}" Header="{DynamicResource ReloadPluginHotkey}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe72c;" />
</ui:SettingsCard.HeaderIcon>
<cc:HotkeyDisplay Keys="F5" />
</ui:SettingsCard>
<ui:SettingsCard Header="{DynamicResource HotkeySelectFirstResult}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xE898;" />
</ui:SettingsCard.HeaderIcon>
<cc:HotkeyDisplay Keys="Alt+Home" />
</ui:SettingsCard>
<ui:SettingsCard Header="{DynamicResource HotkeySelectLastResult}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xE896;" />
</ui:SettingsCard.HeaderIcon>
<cc:HotkeyDisplay Keys="Alt+End" />
</ui:SettingsCard>
<ui:SettingsCard Header="{DynamicResource CycleHistoryUpHotkey}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe70e;" />
</ui:SettingsCard.HeaderIcon>
<flowlauncher:HotkeyControl
DefaultHotkey="Alt+Up"
Type="CycleHistoryUpHotkey"
ValidateKeyGesture="False" />
</ui:SettingsCard>
<ui:SettingsCard Header="{DynamicResource CycleHistoryDownHotkey}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe70d;" />
</ui:SettingsCard.HeaderIcon>
<flowlauncher:HotkeyControl
DefaultHotkey="Alt+Down"
Type="CycleHistoryDownHotkey"
ValidateKeyGesture="False" />
</ui:SettingsCard>
<ui:SettingsCard Header="{DynamicResource SelectPrevPageHotkey}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xf0ad;" />
</ui:SettingsCard.HeaderIcon>
<flowlauncher:HotkeyControl
DefaultHotkey=""
Type="SelectPrevPageHotkey"
ValidateKeyGesture="False" />
</ui:SettingsCard>
<ui:SettingsCard Header="{DynamicResource SelectNextPageHotkey}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xf0ae;" />
</ui:SettingsCard.HeaderIcon>
<flowlauncher:HotkeyControl
DefaultHotkey=""
Type="SelectNextPageHotkey"
ValidateKeyGesture="False" />
</ui:SettingsCard>
<ui:SettingsCard Header="{DynamicResource RequeryHotkey}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe72c;" />
</ui:SettingsCard.HeaderIcon>
<cc:HotkeyDisplay Keys="Ctrl+R" />
</ui:SettingsCard>
<ui:SettingsCard Header="{DynamicResource ToggleGameModeHotkey}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe7fc;" />
</ui:SettingsCard.HeaderIcon>
<cc:HotkeyDisplay Keys="Ctrl+F12" />
</ui:SettingsCard>
<ui:SettingsCard Header="{DynamicResource CopyFilePathHotkey}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe8c8;" />
</ui:SettingsCard.HeaderIcon>
<cc:HotkeyDisplay Keys="Ctrl+Shift+C" />
</ui:SettingsCard>
<ui:SettingsCard Header="{DynamicResource QuickWidthHotkey}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe7ea;" />
</ui:SettingsCard.HeaderIcon>
<StackPanel Orientation="Horizontal">
<cc:HotkeyDisplay Keys="Ctrl+[" />
<cc:HotkeyDisplay Margin="4 0 0 0" Keys="Ctrl+]" />
</StackPanel>
</ui:SettingsCard>
<ui:SettingsCard Header="{DynamicResource QuickHeightHotkey}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe7eb;" />
</ui:SettingsCard.HeaderIcon>
<StackPanel Orientation="Horizontal">
<cc:HotkeyDisplay Keys="Ctrl+Minus" />
<cc:HotkeyDisplay Margin="4 0 0 0" Keys="Ctrl+Plus" />
</StackPanel>
</ui:SettingsCard>
</ui:SettingsExpander.Items>
</ui:SettingsExpander>
<ui:SettingsExpander
Margin="0 14 0 0"
Description="{DynamicResource autoCompleteHotkeyToolTip}"
Header="{DynamicResource autoCompleteHotkey}">
<ui:SettingsExpander.HeaderIcon>
<ui:FontIcon Glyph="&#xe893;" />
</ui:SettingsExpander.HeaderIcon>
<flowlauncher:HotkeyControl
DefaultHotkey="Ctrl+Tab"
Type="AutoCompleteHotkey"
ValidateKeyGesture="False" />
<ui:SettingsExpander.Items>
<ui:SettingsCard Description="{DynamicResource AdditionalHotkeyToolTip}" Header="{DynamicResource autoCompleteHotkey}">
<flowlauncher:HotkeyControl
DefaultHotkey=""
Type="AutoCompleteHotkey2"
ValidateKeyGesture="False" />
</ui:SettingsCard>
</ui:SettingsExpander.Items>
</ui:SettingsExpander>
<ui:SettingsExpander Margin="0 4 0 0" Header="{DynamicResource SelectPrevItemHotkey}">
<ui:SettingsExpander.HeaderIcon>
<ui:FontIcon Glyph="&#xe74a;" />
</ui:SettingsExpander.HeaderIcon>
<flowlauncher:HotkeyControl
DefaultHotkey="Shift+Tab"
Type="SelectPrevItemHotkey"
ValidateKeyGesture="False" />
<ui:SettingsExpander.Items>
<ui:SettingsCard Description="{DynamicResource AdditionalHotkeyToolTip}" Header="{DynamicResource SelectPrevItemHotkey}">
<flowlauncher:HotkeyControl
DefaultHotkey=""
Type="SelectPrevItemHotkey2"
ValidateKeyGesture="False" />
</ui:SettingsCard>
</ui:SettingsExpander.Items>
</ui:SettingsExpander>
<ui:SettingsExpander Margin="0 4 0 0" Header="{DynamicResource SelectNextItemHotkey}">
<ui:SettingsExpander.HeaderIcon>
<ui:FontIcon Glyph="&#xe74b;" />
</ui:SettingsExpander.HeaderIcon>
<flowlauncher:HotkeyControl
DefaultHotkey="Tab"
Type="SelectNextItemHotkey"
ValidateKeyGesture="False" />
<ui:SettingsExpander.Items>
<ui:SettingsCard Description="{DynamicResource AdditionalHotkeyToolTip}" Header="{DynamicResource SelectNextItemHotkey}">
<flowlauncher:HotkeyControl
DefaultHotkey=""
Type="SelectNextItemHotkey2"
ValidateKeyGesture="False" />
</ui:SettingsCard>
</ui:SettingsExpander.Items>
</ui:SettingsExpander>
<StackPanel
x:Name="PluginHotkeySettings"
Margin="0 10 0 0"
Loaded="PluginHotkeySettings_Loaded"
Orientation="Vertical" />
<ui:SettingsExpander Margin="0 20 0 0" Header="{DynamicResource customQueryHotkey}">
<ui:SettingsExpander.HeaderIcon>
<ui:FontIcon Glyph="&#xf26c;" />
</ui:SettingsExpander.HeaderIcon>
<ui:SettingsExpander.ItemsHeader>
<StackPanel Background="{DynamicResource SettingsCardBackground}">
<Separator
Width="Auto"
Margin="0"
BorderThickness="1"
Style="{StaticResource SettingSeparatorStyle}" />
<StackPanel Margin="18 18 18 0">
<ListView
MinHeight="160"
Margin="0"
Background="{DynamicResource Color02B}"
BorderBrush="DarkGray"
BorderThickness="1"
ItemsSource="{Binding Settings.CustomPluginHotkeys}"
SelectedItem="{Binding SelectedCustomPluginHotkey}"
Style="{StaticResource {x:Static GridView.GridViewStyleKey}}">
<ListView.View>
<GridView>
<GridViewColumn Width="180" Header="{DynamicResource hotkey}">
<GridViewColumn.CellTemplate>
<DataTemplate DataType="userSettings:CustomPluginHotkey">
<TextBlock Text="{Binding Hotkey}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="430" Header="{DynamicResource customQuery}">
<GridViewColumn.CellTemplate>
<DataTemplate DataType="userSettings:CustomPluginHotkey">
<TextBlock Text="{Binding ActionKeyword}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal">
<Button
MinWidth="100"
Margin="10"
Command="{Binding CustomHotkeyDeleteCommand}"
Content="{DynamicResource delete}" />
<Button
MinWidth="100"
Margin="10"
Command="{Binding CustomHotkeyEditCommand}"
Content="{DynamicResource edit}" />
<Button
MinWidth="100"
Margin="10 10 0 10"
Command="{Binding CustomHotkeyAddCommand}"
Content="{DynamicResource add}" />
</StackPanel>
</StackPanel>
</StackPanel>
</ui:SettingsExpander.ItemsHeader>
</ui:SettingsExpander>
<ui:SettingsExpander Margin="0 4 0 0" Header="{DynamicResource customQueryShortcut}">
<ui:SettingsExpander.HeaderIcon>
<ui:FontIcon Glyph="&#xf26b;" />
</ui:SettingsExpander.HeaderIcon>
<ui:SettingsExpander.ItemsHeader>
<StackPanel Background="{DynamicResource SettingsCardBackground}">
<Separator
Width="Auto"
Margin="0"
BorderThickness="1"
Style="{StaticResource SettingSeparatorStyle}" />
<StackPanel Margin="18 12 18 0">
<ListView
MinHeight="160"
Margin="0 6 0 0"
Background="{DynamicResource Color02B}"
BorderBrush="DarkGray"
BorderThickness="1"
ItemsSource="{Binding Settings.CustomShortcuts}"
SelectedItem="{Binding SelectedCustomShortcut}"
Style="{StaticResource {x:Static GridView.GridViewStyleKey}}">
<ListView.View>
<GridView>
<GridViewColumn Width="180" Header="{DynamicResource customShortcut}">
<GridViewColumn.CellTemplate>
<DataTemplate DataType="{x:Type userSettings:CustomShortcutModel}">
<TextBlock Text="{Binding Key}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="430" Header="{DynamicResource customShortcutExpansion}">
<GridViewColumn.CellTemplate>
<DataTemplate DataType="{x:Type userSettings:CustomShortcutModel}">
<TextBlock Text="{Binding Value}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
<StackPanel
Margin="0"
HorizontalAlignment="Right"
VerticalAlignment="Top"
Orientation="Horizontal">
<Button
MinWidth="100"
Margin="10"
Command="{Binding CustomShortcutDeleteCommand}"
Content="{DynamicResource delete}" />
<Button
MinWidth="100"
Margin="10"
Command="{Binding CustomShortcutEditCommand}"
Content="{DynamicResource edit}" />
<Button
MinWidth="100"
Margin="10 10 0 10"
Command="{Binding CustomShortcutAddCommand}"
Content="{DynamicResource add}" />
</StackPanel>
</StackPanel>
</StackPanel>
</ui:SettingsExpander.ItemsHeader>
</ui:SettingsExpander>
<ui:SettingsExpander Margin="0 4 0 14" Header="{DynamicResource builtinShortcuts}">
<ui:SettingsExpander.HeaderIcon>
<ui:FontIcon Glyph="&#xf158;" />
</ui:SettingsExpander.HeaderIcon>
<ui:SettingsExpander.ItemsHeader>
<StackPanel Background="{DynamicResource SettingsCardBackground}">
<Separator
Width="Auto"
Margin="0"
BorderThickness="1"
Style="{StaticResource SettingSeparatorStyle}" />
<StackPanel Margin="16 8 16 0">
<ListView
MinHeight="160"
Margin="0 6 0 16"
Background="{DynamicResource Color02B}"
BorderBrush="DarkGray"
BorderThickness="1"
ItemsSource="{Binding Settings.BuiltinShortcuts}"
Style="{StaticResource {x:Static GridView.GridViewStyleKey}}">
<ListView.View>
<GridView>
<GridViewColumn Width="180" Header="{DynamicResource customShortcut}">
<GridViewColumn.CellTemplate>
<DataTemplate DataType="{x:Type userSettings:BuiltinShortcutModel}">
<TextBlock Text="{Binding Key}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="430" Header="{DynamicResource builtinShortcutDescription}">
<GridViewColumn.CellTemplate>
<DataTemplate DataType="{x:Type userSettings:BuiltinShortcutModel}">
<TextBlock Text="{Binding LocalizedDescription}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</StackPanel>
</StackPanel>
</ui:SettingsExpander.ItemsHeader>
</ui:SettingsExpander>
</StackPanel>
</ui:ScrollViewerEx>
</ui:Page>