Flow.Launcher/Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml

601 lines
28 KiB
XML

<ui:Page
x:Class="Flow.Launcher.SettingPages.Views.SettingsPaneGeneral"
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:converters="clr-namespace:Flow.Launcher.Converters"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:ext="clr-namespace:Flow.Launcher.Resources.MarkupExtensions"
xmlns:ikw="http://schemas.inkore.net/lib/ui/wpf"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:settingsViewModels="clr-namespace:Flow.Launcher.SettingPages.ViewModels"
xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern"
xmlns:userSettings="clr-namespace:Flow.Launcher.Infrastructure.UserSettings;assembly=Flow.Launcher.Infrastructure"
Title="General"
d:DataContext="{d:DesignInstance settingsViewModels:SettingsPaneGeneralViewModel}"
d:DesignHeight="450"
d:DesignWidth="800"
mc:Ignorable="d">
<ui:Page.Resources>
<converters:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter" />
</ui:Page.Resources>
<ui:ScrollViewerEx
FontSize="14"
VirtualizingPanel.ScrollUnit="Pixel"
VirtualizingStackPanel.IsVirtualizing="True">
<VirtualizingStackPanel Margin="5 18 25 30" Orientation="Vertical">
<TextBlock
Grid.Row="2"
Margin="0 5"
FontSize="30"
Style="{StaticResource PageTitle}"
Text="{DynamicResource general}"
TextAlignment="left" />
<ui:SettingsExpander Margin="0 8 0 0" Header="{DynamicResource startFlowLauncherOnSystemStartup}">
<ui:SettingsExpander.HeaderIcon>
<ui:FontIcon Glyph="&#xe8fc;" />
</ui:SettingsExpander.HeaderIcon>
<ui:ToggleSwitch
IsOn="{Binding StartFlowLauncherOnSystemStartup}"
OffContent="{DynamicResource disable}"
OnContent="{DynamicResource enable}" />
<ui:SettingsExpander.Items>
<ui:SettingsCard Description="{DynamicResource useLogonTaskForStartupTooltip}" Header="{DynamicResource useLogonTaskForStartup}">
<ui:ToggleSwitch
IsOn="{Binding UseLogonTaskForStartup}"
OffContent="{DynamicResource disable}"
OnContent="{DynamicResource enable}" />
</ui:SettingsCard>
</ui:SettingsExpander.Items>
</ui:SettingsExpander>
<ui:SettingsCard
Margin="0 4 0 0"
Description="{DynamicResource hideOnStartupToolTip}"
Header="{DynamicResource hideOnStartup}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xed1a;" />
</ui:SettingsCard.HeaderIcon>
<ui:ToggleSwitch
IsOn="{Binding Settings.HideOnStartup}"
OffContent="{DynamicResource disable}"
OnContent="{DynamicResource enable}" />
</ui:SettingsCard>
<ui:SettingsCard Margin="0 12 0 0" Header="{DynamicResource hideFlowLauncherWhenLoseFocus}">
<ui:ToggleSwitch
IsOn="{Binding Settings.HideWhenDeactivated}"
OffContent="{DynamicResource disable}"
OnContent="{DynamicResource enable}" />
</ui:SettingsCard>
<ui:SettingsCard
Margin="0 4 0 0"
Description="{DynamicResource hideNotifyIconToolTip}"
Header="{DynamicResource hideNotifyIcon}">
<ui:ToggleSwitch
IsOn="{Binding Settings.HideNotifyIcon}"
OffContent="{DynamicResource disable}"
OnContent="{DynamicResource enable}" />
</ui:SettingsCard>
<ui:SettingsCard
Margin="0 14 0 0"
Description="{DynamicResource showAtTopmostToolTip}"
Header="{DynamicResource showAtTopmost}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xf5ed;" />
</ui:SettingsCard.HeaderIcon>
<ui:ToggleSwitch
IsOn="{Binding Settings.ShowAtTopmost}"
OffContent="{DynamicResource disable}"
OnContent="{DynamicResource enable}" />
</ui:SettingsCard>
<ui:SettingsCard Margin="0 4 0 0" Header="{DynamicResource SearchWindowPosition}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe7f4;" />
</ui:SettingsCard.HeaderIcon>
<StackPanel Orientation="Horizontal">
<ComboBox
MinWidth="220"
VerticalAlignment="Center"
DisplayMemberPath="Display"
FontSize="14"
ItemsSource="{Binding SearchWindowScreens}"
SelectedValue="{Binding Settings.SearchWindowScreen}"
SelectedValuePath="Value" />
<ComboBox
MinWidth="160"
Margin="18 0 0 0"
VerticalAlignment="Center"
FontSize="14"
ItemsSource="{Binding ScreenNumbers}"
SelectedValue="{Binding Settings.CustomScreenNumber}"
Visibility="{ext:VisibleWhen {Binding Settings.SearchWindowScreen},
IsEqualTo={x:Static userSettings:SearchWindowScreens.Custom}}" />
</StackPanel>
</ui:SettingsCard>
<ui:SettingsCard
Margin="0 4 0 0"
Header="{DynamicResource SearchWindowAlign}"
Visibility="{ext:CollapsedWhen {Binding Settings.SearchWindowScreen},
IsEqualTo={x:Static userSettings:SearchWindowScreens.RememberLastLaunchLocation}}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe7f4;" />
</ui:SettingsCard.HeaderIcon>
<StackPanel Orientation="Horizontal">
<ComboBox
MinWidth="160"
VerticalAlignment="Center"
DisplayMemberPath="Display"
FontSize="14"
ItemsSource="{Binding SearchWindowAligns}"
SelectedValue="{Binding Settings.SearchWindowAlign}"
SelectedValuePath="Value" />
<StackPanel
Margin="18 0 0 0"
VerticalAlignment="Center"
Orientation="Horizontal"
Visibility="{ext:VisibleWhen {Binding Settings.SearchWindowAlign},
IsEqualTo={x:Static userSettings:SearchWindowAligns.Custom}}">
<TextBox
MinWidth="80"
VerticalAlignment="Center"
Text="{Binding Settings.CustomWindowLeft}" />
<TextBlock
Margin="10"
VerticalAlignment="Center"
Text="x" />
<TextBox
MinWidth="80"
VerticalAlignment="Center"
Text="{Binding Settings.CustomWindowTop}"
TextWrapping="NoWrap" />
</StackPanel>
</StackPanel>
</ui:SettingsCard>
<ui:SettingsCard
Margin="0 14 0 0"
Description="{DynamicResource ignoreHotkeysOnFullscreenToolTip}"
Header="{DynamicResource ignoreHotkeysOnFullscreen}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe7fc;" />
</ui:SettingsCard.HeaderIcon>
<ui:ToggleSwitch
IsOn="{Binding Settings.IgnoreHotkeysOnFullscreen}"
OffContent="{DynamicResource disable}"
OnContent="{DynamicResource enable}" />
</ui:SettingsCard>
<ui:SettingsCard
Margin="0 14 0 0"
Description="{Binding AlwaysPreviewToolTip}"
Header="{DynamicResource AlwaysPreview}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe8a1;" />
</ui:SettingsCard.HeaderIcon>
<ui:ToggleSwitch
IsOn="{Binding Settings.AlwaysPreview}"
OffContent="{DynamicResource disable}"
OnContent="{DynamicResource enable}"
ToolTip="{Binding AlwaysPreviewToolTip}" />
</ui:SettingsCard>
<ui:SettingsCard
Margin="0 14 0 0"
Description="{DynamicResource autoUpdatesTooltip}"
Header="{DynamicResource autoUpdates}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xecc5;" />
</ui:SettingsCard.HeaderIcon>
<ui:ToggleSwitch
IsOn="{Binding AutoUpdates}"
OffContent="{DynamicResource disable}"
OnContent="{DynamicResource enable}" />
</ui:SettingsCard>
<ui:SettingsCard
Margin="0 4 0 0"
Description="{DynamicResource portableModeToolTIp}"
Header="{DynamicResource portableMode}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe88e;" />
</ui:SettingsCard.HeaderIcon>
<ui:ToggleSwitch
IsOn="{Binding PortableMode}"
OffContent="{DynamicResource disable}"
OnContent="{DynamicResource enable}" />
</ui:SettingsCard>
<ui:SettingsCard
Margin="0 14 0 0"
Description="{DynamicResource querySearchPrecisionToolTip}"
Header="{DynamicResource querySearchPrecision}">
<ComboBox
MaxWidth="200"
DisplayMemberPath="Display"
ItemsSource="{Binding SearchPrecisionScores}"
SelectedValue="{Binding Settings.QuerySearchPrecision}"
SelectedValuePath="Value" />
</ui:SettingsCard>
<ui:SettingsCard
Margin="0 4 0 0"
Description="{DynamicResource lastQueryModeToolTip}"
Header="{DynamicResource lastQueryMode}">
<ComboBox
MinWidth="210"
DisplayMemberPath="Display"
ItemsSource="{Binding LastQueryModes}"
SelectedValue="{Binding Settings.LastQueryMode}"
SelectedValuePath="Value" />
</ui:SettingsCard>
<ui:SettingsCard
Margin="0 14 0 0"
Description="{DynamicResource historyStyleTooltip}"
Header="{DynamicResource historyStyle}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xE81C;" />
</ui:SettingsCard.HeaderIcon>
<ComboBox
MaxWidth="200"
DisplayMemberPath="Display"
ItemsSource="{Binding HistoryStyles}"
SelectedValue="{Binding Settings.HistoryStyle}"
SelectedValuePath="Value" />
</ui:SettingsCard>
<ui:SettingsCard
Margin="0 14 0 0"
Description="{DynamicResource autoRestartAfterChangingToolTip}"
Header="{DynamicResource autoRestartAfterChanging}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xF83E;" />
</ui:SettingsCard.HeaderIcon>
<ui:ToggleSwitch
IsOn="{Binding Settings.AutoRestartAfterChanging}"
OffContent="{DynamicResource disable}"
OnContent="{DynamicResource enable}" />
</ui:SettingsCard>
<ui:SettingsCard
Margin="0 4 0 0"
Description="{DynamicResource showUnknownSourceWarningToolTip}"
Header="{DynamicResource showUnknownSourceWarning}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xE7BA;" />
</ui:SettingsCard.HeaderIcon>
<ui:ToggleSwitch
IsOn="{Binding Settings.ShowUnknownSourceWarning}"
OffContent="{DynamicResource disable}"
OnContent="{DynamicResource enable}" />
</ui:SettingsCard>
<ui:SettingsCard
Margin="0 4 0 0"
Description="{DynamicResource autoUpdatePluginsToolTip}"
Header="{DynamicResource autoUpdatePlugins}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xecc5;" />
</ui:SettingsCard.HeaderIcon>
<ui:ToggleSwitch
IsOn="{Binding Settings.AutoUpdatePlugins}"
OffContent="{DynamicResource disable}"
OnContent="{DynamicResource enable}" />
</ui:SettingsCard>
<ui:SettingsExpander
Margin="0 14 0 0"
Description="{DynamicResource dialogJumpToolTip}"
Header="{DynamicResource dialogJump}">
<ui:SettingsExpander.HeaderIcon>
<ui:FontIcon Glyph="&#xE8AB;" />
</ui:SettingsExpander.HeaderIcon>
<ui:ToggleSwitch
IsOn="{Binding EnableDialogJump}"
OffContent="{DynamicResource disable}"
OnContent="{DynamicResource enable}" />
<ui:SettingsExpander.Items>
<ui:SettingsCard
Description="{DynamicResource autoDialogJumpToolTip}"
Header="{DynamicResource autoDialogJump}"
Visibility="Collapsed">
<ui:ToggleSwitch
IsOn="{Binding Settings.AutoDialogJump}"
OffContent="{DynamicResource disable}"
OnContent="{DynamicResource enable}" />
</ui:SettingsCard>
<ui:SettingsCard Description="{DynamicResource showDialogJumpWindowToolTip}" Header="{DynamicResource showDialogJumpWindow}">
<ui:ToggleSwitch
IsOn="{Binding Settings.ShowDialogJumpWindow}"
OffContent="{DynamicResource disable}"
OnContent="{DynamicResource enable}" />
</ui:SettingsCard>
<ui:SettingsCard Description="{DynamicResource dialogJumpWindowPositionToolTip}" Header="{DynamicResource dialogJumpWindowPosition}">
<ComboBox
MinWidth="120"
MaxWidth="210"
DisplayMemberPath="Display"
ItemsSource="{Binding DialogJumpWindowPositions}"
SelectedValue="{Binding Settings.DialogJumpWindowPosition}"
SelectedValuePath="Value" />
</ui:SettingsCard>
<ui:SettingsCard Description="{DynamicResource dialogJumpResultBehaviourToolTip}" Header="{DynamicResource dialogJumpResultBehaviour}">
<ComboBox
MinWidth="120"
DisplayMemberPath="Display"
ItemsSource="{Binding DialogJumpResultBehaviours}"
SelectedValue="{Binding Settings.DialogJumpResultBehaviour}"
SelectedValuePath="Value" />
</ui:SettingsCard>
<ui:SettingsCard Description="{DynamicResource dialogJumpFileResultBehaviourToolTip}" Header="{DynamicResource dialogJumpFileResultBehaviour}">
<ComboBox
MinWidth="120"
MaxWidth="240"
DisplayMemberPath="Display"
ItemsSource="{Binding DialogJumpFileResultBehaviours}"
SelectedValue="{Binding Settings.DialogJumpFileResultBehaviour}"
SelectedValuePath="Value" />
</ui:SettingsCard>
</ui:SettingsExpander.Items>
</ui:SettingsExpander>
<ui:SettingsExpander
Margin="0 14 0 0"
Description="{DynamicResource searchDelayToolTip}"
Header="{DynamicResource searchDelay}">
<ui:SettingsExpander.HeaderIcon>
<ui:FontIcon Glyph="&#xE961;" />
</ui:SettingsExpander.HeaderIcon>
<ui:ToggleSwitch
IsOn="{Binding Settings.SearchQueryResultsWithDelay}"
OffContent="{DynamicResource disable}"
OnContent="{DynamicResource enable}" />
<ui:SettingsExpander.Items>
<ui:SettingsCard Description="{DynamicResource searchDelayTimeToolTip}" Header="{DynamicResource searchDelayTime}">
<ui:NumberBox
Width="120"
MinWidth="120"
Margin="0 0 0 0"
Maximum="1000"
Minimum="0"
SmallChange="10"
SpinButtonPlacementMode="Compact"
ValidationMode="InvalidInputOverwritten"
Value="{Binding SearchDelayTimeValue}" />
</ui:SettingsCard>
</ui:SettingsExpander.Items>
</ui:SettingsExpander>
<ui:SettingsCard
Margin="0 14 0 0"
Description="{DynamicResource homePageToolTip}"
Header="{DynamicResource homePage}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xE80F;" />
</ui:SettingsCard.HeaderIcon>
<ui:ToggleSwitch
IsOn="{Binding Settings.ShowHomePage}"
OffContent="{DynamicResource disable}"
OnContent="{DynamicResource enable}" />
</ui:SettingsCard>
<ui:SettingsExpander Margin="0 4 0 0" Header="{DynamicResource historyResultsForHomePage}">
<ui:SettingsExpander.HeaderIcon>
<ui:FontIcon Glyph="&#xE81C;" />
</ui:SettingsExpander.HeaderIcon>
<ui:ToggleSwitch
IsOn="{Binding Settings.ShowHistoryResultsForHomePage}"
OffContent="{DynamicResource disable}"
OnContent="{DynamicResource enable}" />
<ui:SettingsExpander.Items>
<ui:SettingsCard Header="{DynamicResource historyResultsCountForHomePage}">
<ui:NumberBox
Width="120"
MinWidth="120"
Margin="0 0 0 0"
Maximum="100"
Minimum="0"
SmallChange="5"
SpinButtonPlacementMode="Compact"
ValidationMode="InvalidInputOverwritten"
Value="{Binding MaxHistoryResultsToShowValue}" />
</ui:SettingsCard>
</ui:SettingsExpander.Items>
</ui:SettingsExpander>
<ui:SettingsCard
Margin="0 14 0 0"
Description="{DynamicResource defaultFileManagerToolTip}"
Header="{DynamicResource defaultFileManager}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe838;" />
</ui:SettingsCard.HeaderIcon>
<Button
Width="160"
MaxWidth="250"
Margin="10 0 0 0"
Command="{Binding SelectFileManagerCommand}"
Content="{Binding Settings.CustomExplorer.DisplayName}" />
</ui:SettingsCard>
<ui:SettingsCard
Margin="0 4 0 0"
Description="{DynamicResource defaultBrowserToolTip}"
Header="{DynamicResource defaultBrowser}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xf6fa;" />
</ui:SettingsCard.HeaderIcon>
<Button
Width="160"
MaxWidth="250"
Margin="10 0 0 0"
Command="{Binding SelectBrowserCommand}"
Content="{Binding Settings.CustomBrowser.DisplayName}" />
</ui:SettingsCard>
<ui:SettingsCard Margin="0 14 0 0" Header="{DynamicResource pythonFilePath}">
<StackPanel Orientation="Horizontal">
<TextBox
Width="300"
Height="34"
Text="{Binding Settings.PluginSettings.PythonExecutablePath, TargetNullValue='None'}" />
<Button
Height="34"
Margin="10 0 0 0"
Command="{Binding SelectPythonCommand}"
Content="{DynamicResource select}" />
</StackPanel>
</ui:SettingsCard>
<ui:SettingsCard Margin="0 4 0 0" Header="{DynamicResource nodeFilePath}">
<StackPanel Orientation="Horizontal">
<TextBox
Width="300"
Height="34"
Text="{Binding Settings.PluginSettings.NodeExecutablePath, TargetNullValue='None'}" />
<Button
Height="34"
Margin="10 0 0 0"
Command="{Binding SelectNodeCommand}"
Content="{DynamicResource select}" />
</StackPanel>
</ui:SettingsCard>
<ui:SettingsCard
Margin="0 14 0 0"
Description="{DynamicResource typingStartEnTooltip}"
Header="{DynamicResource typingStartEn}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe8d3;" />
</ui:SettingsCard.HeaderIcon>
<ui:ToggleSwitch
IsOn="{Binding Settings.AlwaysStartEn}"
OffContent="{DynamicResource disable}"
OnContent="{DynamicResource enable}" />
</ui:SettingsCard>
<ui:SettingsCard
Margin="0 14 0 0"
Description="{DynamicResource ShouldUsePinyinToolTip}"
Header="{DynamicResource ShouldUsePinyin}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe98a;" />
</ui:SettingsCard.HeaderIcon>
<ui:ToggleSwitch
IsOn="{Binding ShouldUsePinyin}"
OffContent="{DynamicResource disable}"
OnContent="{DynamicResource enable}"
ToolTip="{DynamicResource ShouldUsePinyinToolTip}" />
</ui:SettingsCard>
<ui:SettingsExpander
Margin="0 4 0 0"
Description="{DynamicResource ShouldUseDoublePinyinToolTip}"
Header="{DynamicResource ShouldUseDoublePinyin}"
Visibility="{ext:VisibleWhen {Binding ShouldUsePinyin},
IsEqualToBool=True}">
<ui:SettingsExpander.HeaderIcon>
<ui:FontIcon Glyph="&#xf085;" />
</ui:SettingsExpander.HeaderIcon>
<ui:ToggleSwitch
IsOn="{Binding UseDoublePinyin}"
OffContent="{DynamicResource disable}"
OnContent="{DynamicResource enable}"
ToolTip="{DynamicResource ShouldUseDoublePinyinToolTip}" />
<ui:SettingsExpander.Items>
<ui:SettingsCard Header="{DynamicResource DoublePinyinSchema}">
<ComboBox
DisplayMemberPath="Display"
ItemsSource="{Binding DoublePinyinSchemas}"
SelectedValue="{Binding Settings.DoublePinyinSchema}"
SelectedValuePath="Value" />
</ui:SettingsCard>
</ui:SettingsExpander.Items>
</ui:SettingsExpander>
<ui:SettingsCard Margin="0 14 0 0" Header="{DynamicResource language}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xf2b7;" />
</ui:SettingsCard.HeaderIcon>
<ComboBox
MaxWidth="200"
Margin="10 0 0 0"
DisplayMemberPath="Display"
ItemsSource="{Binding Languages}"
SelectedValue="{Binding Language}"
SelectedValuePath="LanguageCode" />
</ui:SettingsCard>
<Border Visibility="{Binding KoreanIMERegistryKeyExists, Converter={StaticResource BoolToVisibilityConverter}}">
<ui:InfoBar
Title="{DynamicResource KoreanImeTitle}"
Margin="0 14 0 0"
IsClosable="False"
IsIconVisible="True"
IsOpen="True"
Message="{DynamicResource KoreanImeGuide}"
Severity="Warning"
Visibility="{Binding LegacyKoreanIMEEnabled, Converter={StaticResource BoolToVisibilityConverter}, ConverterParameter=Inverted, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" />
</Border>
<ikw:SimpleStackPanel Margin="0 14 0 0" Visibility="{Binding KoreanIMERegistryKeyExists, Converter={StaticResource BoolToVisibilityConverter}}">
<ui:SettingsCard Description="{DynamicResource KoreanImeRegistryTooltip}" Header="{DynamicResource KoreanImeRegistry}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe88b;" />
</ui:SettingsCard.HeaderIcon>
<ui:ToggleSwitch
IsOn="{Binding LegacyKoreanIMEEnabled}"
OffContent="{DynamicResource disable}"
OnContent="{DynamicResource enable}" />
</ui:SettingsCard>
<ui:SettingsCard
Margin="0 4 0 0"
Description="{DynamicResource KoreanImeOpenLinkToolTip}"
Header="{DynamicResource KoreanImeOpenLink}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe8d3;" />
</ui:SettingsCard.HeaderIcon>
<Button Command="{Binding OpenImeSettingsCommand}" Content="{DynamicResource KoreanImeOpenLinkButton}" />
</ui:SettingsCard>
</ikw:SimpleStackPanel>
</VirtualizingStackPanel>
</ui:ScrollViewerEx>
</ui:Page>