Flow.Launcher/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml

658 lines
37 KiB
XML

<UserControl
x:Class="Flow.Launcher.Plugin.Explorer.Views.ExplorerSettings"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:converters="clr-namespace:Flow.Launcher.Plugin.Explorer.Views.Converters"
xmlns:core="clr-namespace:Flow.Launcher.Core.Resource;assembly=Flow.Launcher.Core"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:qa="clr-namespace:Flow.Launcher.Plugin.Explorer.Search.QuickAccessLinks"
xmlns:ui="http://schemas.modernwpf.com/2019"
xmlns:viewModels="clr-namespace:Flow.Launcher.Plugin.Explorer.ViewModels"
xmlns:views="clr-namespace:Flow.Launcher.Plugin.Explorer.Views"
d:DataContext="{d:DesignInstance viewModels:SettingsViewModel}"
d:DesignHeight="450"
d:DesignWidth="800"
mc:Ignorable="d">
<UserControl.Resources>
<Style x:Key="ExplorerTabItem" TargetType="{x:Type TabItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Border
x:Name="LayoutRoot"
Margin="0 0 0 0"
Padding="{TemplateBinding Padding}"
SnapsToDevicePixels="True">
<Grid>
<Border
x:Name="TabSeparator"
Width="0"
Margin="{DynamicResource TabViewItemSeparatorMargin}"
HorizontalAlignment="Right"
BorderBrush="{DynamicResource TabViewItemSeparator}"
BorderThickness="1" />
<Border
x:Name="TabContainer"
Grid.Column="1"
Padding="{DynamicResource TabViewItemHeaderPadding}"
Background="{DynamicResource TabViewItemHeaderBackground}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<ContentPresenter
x:Name="ContentPresenter"
Grid.Column="1"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
ContentSource="Header"
Focusable="False"
RecognizesAccessKey="True"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
TextElement.FontSize="{DynamicResource TabViewItemHeaderFontSize}"
TextElement.FontWeight="{TemplateBinding FontWeight}"
TextElement.Foreground="{DynamicResource Color05B}" />
</Grid>
</Border>
</Grid>
</Border>
<ControlTemplate.Triggers>
<!-- PointerOver -->
<Trigger Property="IsMouseOver" Value="False">
<Setter TargetName="TabContainer" Property="Background" Value="{DynamicResource Color06B}" />
<Setter TargetName="ContentPresenter" Property="TextElement.Foreground" Value="{DynamicResource Color08B}" />
</Trigger>
<!-- PointerOver -->
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="TabContainer" Property="Background" Value="{DynamicResource Color06B}" />
<Setter TargetName="ContentPresenter" Property="TextElement.Foreground" Value="{DynamicResource TabViewItemHeaderForegroundPointerOver}" />
</Trigger>
<!-- Selected -->
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="TabContainer" Property="Background" Value="{DynamicResource Color00B}" />
<Setter TargetName="ContentPresenter" Property="TextElement.Foreground" Value="{DynamicResource Color05B}" />
<Setter Property="Panel.ZIndex" Value="1" />
<Setter TargetName="ContentPresenter" Property="TextElement.FontWeight" Value="SemiBold" />
</Trigger>
<!-- PointerOverSelected -->
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True" />
<Condition Property="IsSelected" Value="True" />
</MultiTrigger.Conditions>
<Setter TargetName="TabContainer" Property="Background" Value="{DynamicResource Color00B}" />
<Setter TargetName="ContentPresenter" Property="TextElement.Foreground" Value="{DynamicResource Color05B}" />
<Setter Property="Panel.ZIndex" Value="1" />
<Setter TargetName="ContentPresenter" Property="TextElement.FontWeight" Value="SemiBold" />
</MultiTrigger>
<!-- Disabled -->
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="ContentPresenter" Property="TextElement.Foreground" Value="{DynamicResource TabViewItemHeaderForegroundDisabled}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<DataTemplate x:Key="ListViewTemplateAccessLinks" DataType="qa:AccessLink">
<TextBlock Margin="0 5 0 5" Text="{Binding Path, Mode=OneTime}" />
</DataTemplate>
<core:TranslationConverter x:Key="TranslationConverter" />
<DataTemplate x:Key="ListViewActionKeywords" DataType="{x:Type views:ActionKeywordModel}">
<Grid>
<TextBlock
Margin="0 5 0 0"
IsEnabled="{Binding Enabled}"
Text="{Binding Description, Mode=OneTime, Converter={StaticResource TranslationConverter}}">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="True">
<Setter Property="Foreground" Value="{DynamicResource Color05B}" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{DynamicResource Color18B}" />
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<TextBlock
Margin="250 5 0 0"
IsEnabled="{Binding Enabled}"
Text="{Binding Keyword}">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="True">
<Setter Property="Foreground" Value="{DynamicResource Color05B}" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{DynamicResource Color18B}" />
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Grid>
</DataTemplate>
<converters:EnumNameConverter x:Key="EnumNameConverter" />
</UserControl.Resources>
<Grid Margin="0">
<TabControl
x:Name="TabView"
MinHeight="0"
Background="{DynamicResource Color00B}"
BorderThickness="0"
SelectedIndex="0"
TabStripPlacement="Top">
<TabItem
Width="Auto"
Header="{DynamicResource plugin_explorer_generalsetting_header}"
Style="{DynamicResource ExplorerTabItem}">
<StackPanel Grid.Row="0" Margin="30 10 0 0">
<StackPanel>
<StackPanel Orientation="Vertical">
<CheckBox
Margin="0 10 0 0"
HorizontalAlignment="Left"
Content="{DynamicResource plugin_explorer_use_location_as_working_dir}"
IsChecked="{Binding Settings.UseLocationAsWorkingDir}" />
<CheckBox
Margin="0 10 0 0"
HorizontalAlignment="Left"
Content="{DynamicResource plugin_explorer_default_open_in_file_manager}"
IsChecked="{Binding Settings.DefaultOpenFolderInFileManager}" />
<StackPanel Margin="0 10 0 10" Orientation="Horizontal">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="A" />
<ColumnDefinition Width="*" SharedSizeGroup="B" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock
Grid.Row="0"
Grid.Column="0"
Margin="0 6 16 6"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Text="{DynamicResource plugin_explorer_file_editor_path}"
TextBlock.Foreground="{DynamicResource Color05B}" />
<StackPanel
Grid.Row="0"
Grid.Column="1"
Margin="0 6 6 6"
Orientation="Horizontal">
<TextBox
Width="250"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Text="{Binding FileEditorPath}"
TextWrapping="NoWrap" />
<Button
MinWidth="50"
Margin="5 0 0 0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Command="{Binding OpenFileEditorPath}"
Content="..." />
</StackPanel>
<TextBlock
Grid.Row="1"
Grid.Column="0"
Margin="0 6 16 6"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Text="{DynamicResource plugin_explorer_folder_editor_path}"
TextBlock.Foreground="{DynamicResource Color05B}" />
<StackPanel
Grid.Row="1"
Grid.Column="1"
Margin="0 6 6 6"
Orientation="Horizontal">
<TextBox
Width="250"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Text="{Binding FolderEditorPath}"
TextWrapping="NoWrap" />
<Button
MinWidth="50"
Margin="5 0 0 0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Command="{Binding OpenFolderEditorPath}"
Content="..." />
</StackPanel>
<TextBlock
Grid.Row="2"
Grid.Column="0"
Margin="0 16 6 6"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Text="{DynamicResource plugin_explorer_shell_path}"
TextBlock.Foreground="{DynamicResource Color05B}" />
<StackPanel
Grid.Row="2"
Grid.Column="1"
Orientation="Horizontal">
<TextBox
Width="250"
Margin="0 10 0 0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Text="{Binding ShellPath}"
TextWrapping="NoWrap" />
<Button
MinWidth="50"
Margin="5 10 0 0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Command="{Binding OpenShellPath}"
Content="..." />
</StackPanel>
</Grid>
</StackPanel>
<StackPanel Margin="0 0 0 5" Orientation="Horizontal">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="C" />
<ColumnDefinition Width="*" SharedSizeGroup="D" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock
Grid.Row="0"
Grid.Column="0"
Margin="0 0 10 0"
VerticalAlignment="Center"
Text="{DynamicResource plugin_explorer_Index_Search_Engine}"
TextBlock.Foreground="{DynamicResource Color05B}" />
<ComboBox
Grid.Row="0"
Grid.Column="1"
Width="250"
Margin="10 15 10 10"
HorizontalAlignment="Left"
VerticalAlignment="Center"
DisplayMemberPath="Description"
ItemsSource="{Binding IndexSearchEngines}"
SelectedItem="{Binding SelectedIndexSearchEngine}" />
<TextBlock
Grid.Row="1"
Grid.Column="0"
Margin="0 0 10 0"
VerticalAlignment="Center"
Text="{DynamicResource plugin_explorer_Content_Search_Engine}"
TextBlock.Foreground="{DynamicResource Color05B}" />
<ComboBox
Grid.Row="1"
Grid.Column="1"
Width="250"
Margin="10"
HorizontalAlignment="Left"
VerticalAlignment="Center"
DisplayMemberPath="Description"
ItemsSource="{Binding ContentIndexSearchEngines}"
SelectedItem="{Binding SelectedContentSearchEngine}" />
<TextBlock
Grid.Row="2"
Grid.Column="0"
Margin="0 0 10 0"
VerticalAlignment="Center"
Text="{DynamicResource plugin_explorer_Directory_Recursive_Search_Engine}"
TextBlock.Foreground="{DynamicResource Color05B}" />
<ComboBox
Grid.Row="2"
Grid.Column="1"
Width="250"
Margin="10"
HorizontalAlignment="Left"
VerticalAlignment="Center"
DisplayMemberPath="Description"
ItemsSource="{Binding PathEnumerationEngines}"
SelectedItem="{Binding SelectedPathEnumerationEngine}" />
</Grid>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Button
Margin="0 10 10 20"
Padding="20 10 20 10"
Click="btnOpenIndexingOptions_Click"
Content="{DynamicResource plugin_explorer_Open_Window_Index_Option}" />
</StackPanel>
</StackPanel>
</StackPanel>
</StackPanel>
</TabItem>
<TabItem
Width="Auto"
Header="{DynamicResource plugin_explorer_native_context_menu_header}"
Style="{DynamicResource ExplorerTabItem}">
<StackPanel Margin="30 20 10 10">
<CheckBox
Margin="0 0 0 0"
Content="{DynamicResource plugin_explorer_native_context_menu_display_context_menu}"
IsChecked="{Binding ShowWindowsContextMenu}" />
<Grid Margin="0 10 20 10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock
Grid.Row="0"
Grid.Column="0"
Margin="0 0 6 6"
Foreground="{DynamicResource Color05B}"
Text="{DynamicResource plugin_explorer_native_context_menu_include_patterns_guide}"
TextWrapping="Wrap" />
<TextBox
Grid.Row="1"
Grid.Column="0"
Height="300"
Margin="0 6 6 0"
AcceptsReturn="True"
Text="{Binding WindowsContextMenuIncludedItems}"
TextWrapping="Wrap" />
<TextBlock
Grid.Row="0"
Grid.Column="1"
Margin="6 0 0 6"
Foreground="{DynamicResource Color05B}"
Text="{DynamicResource plugin_explorer_native_context_menu_exclude_patterns_guide}"
TextWrapping="Wrap" />
<TextBox
Grid.Row="1"
Grid.Column="1"
Height="300"
Margin="6 6 0 0"
AcceptsReturn="True"
Text="{Binding WindowsContextMenuExcludedItems}"
TextWrapping="Wrap" />
</Grid>
</StackPanel>
</TabItem>
<TabItem
Width="Auto"
Header="{DynamicResource plugin_explorer_previewpanel_setting_header}"
Style="{DynamicResource ExplorerTabItem}">
<StackPanel Margin="30 20 0 10">
<TextBlock Foreground="{DynamicResource Color05B}" Text="{DynamicResource plugin_explorer_previewpanel_file_info_label}" />
<CheckBox
Margin="0 10 0 0"
Content="{DynamicResource plugin_explorer_previewpanel_display_file_size_checkbox}"
IsChecked="{Binding ShowFileSizeInPreviewPanel}" />
<CheckBox
Margin="0 10 0 0"
Content="{DynamicResource plugin_explorer_previewpanel_display_file_creation_checkbox}"
IsChecked="{Binding ShowCreatedDateInPreviewPanel}" />
<CheckBox
Margin="0 10 0 0"
Content="{DynamicResource plugin_explorer_previewpanel_display_file_modification_checkbox}"
IsChecked="{Binding ShowModifiedDateInPreviewPanel}" />
<StackPanel
Margin="0 20 0 0"
IsEnabled="{Binding ShowPreviewPanelDateTimeChoices}"
Visibility="{Binding PreviewPanelDateTimeChoicesVisibility}">
<TextBlock Foreground="{DynamicResource Color05B}" Text="{DynamicResource plugin_explorer_previewpanel_date_and_time_format_label}" />
<StackPanel Margin="0 10 0 0" Orientation="Horizontal">
<ComboBox
Width="200"
ItemsSource="{Binding DateFormatList}"
SelectedItem="{Binding PreviewPanelDateFormat}" />
<TextBlock
Margin="12 0 0 0"
VerticalAlignment="Center"
Foreground="{DynamicResource Color05B}"
Text="{Binding PreviewPanelDateFormatDemo}" />
</StackPanel>
<StackPanel Margin="0 10 0 10" Orientation="Horizontal">
<ComboBox
Width="200"
ItemsSource="{Binding TimeFormatList}"
SelectedItem="{Binding PreviewPanelTimeFormat}" />
<TextBlock
Margin="12 0 0 0"
VerticalAlignment="Center"
Foreground="{DynamicResource Color05B}"
Text="{Binding PreviewPanelTimeFormatDemo}" />
</StackPanel>
</StackPanel>
</StackPanel>
</TabItem>
<TabItem
Width="Auto"
Header="{DynamicResource plugin_explorer_everything_setting_header}"
Style="{DynamicResource ExplorerTabItem}">
<StackPanel Margin="10" Orientation="Vertical">
<CheckBox
Margin="20 10 0 0"
HorizontalAlignment="Left"
Content="{DynamicResource flowlauncher_plugin_everything_search_fullpath}"
IsChecked="{Binding Settings.EverythingSearchFullPath}" />
<StackPanel Orientation="Horizontal">
<Grid Margin="20 10 0 10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="F" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock
Grid.Row="1"
Grid.Column="0"
Margin="0 0 20 0"
VerticalAlignment="Center"
Text="{DynamicResource plugin_explorer_everything_sort_option}"
TextBlock.Foreground="{DynamicResource Color05B}" />
<ComboBox
Grid.Row="1"
Grid.Column="1"
Width="200"
VerticalAlignment="Center"
ItemsSource="{Binding Settings.SortOptions, Mode=OneWay}"
SelectedItem="{Binding Settings.SortOption}"
SelectionChanged="EverythingSortOptionChanged">
<ComboBox.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding Converter={StaticResource EnumNameConverter}}" />
</Grid>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<TextBlock
Grid.Row="2"
Grid.Column="0"
Margin="0 15 20 0"
VerticalAlignment="Center"
Text="{DynamicResource plugin_explorer_everything_installed_path}"
TextBlock.Foreground="{DynamicResource Color05B}" />
<TextBox
Grid.Row="2"
Grid.Column="1"
MinWidth="350"
Margin="0 15 0 0"
Text="{Binding EverythingInstalledPath}" />
</Grid>
</StackPanel>
<StackPanel>
<TextBlock
Name="tbFastSortWarning"
Margin="20 10 10 10"
VerticalAlignment="Center"
DockPanel.Dock="Right"
Foreground="Orange"
Text="{Binding SortOptionWarningMessage, Mode=OneTime}"
TextAlignment="Left"
TextWrapping="Wrap"
Visibility="{Binding FastSortWarningVisibility, Mode=OneTime}" />
</StackPanel>
</StackPanel>
</TabItem>
<TabItem
Width="Auto"
Header="{DynamicResource plugin_explorer_manageactionkeywords_header}"
Style="{DynamicResource ExplorerTabItem}">
<DockPanel HorizontalAlignment="Stretch">
<Border
Margin="10 10 10 5"
BorderBrush="{DynamicResource PopupButtonAreaBorderColor}"
BorderThickness="1"
DockPanel.Dock="Top">
<ListView
ItemTemplate="{StaticResource ListViewActionKeywords}"
ItemsSource="{Binding ActionKeywordsModels}"
SelectedItem="{Binding SelectedActionKeyword}" />
</Border>
<StackPanel
HorizontalAlignment="Right"
DockPanel.Dock="Bottom"
Orientation="Horizontal">
<Button
MinWidth="100"
Margin="10"
Command="{Binding EditActionKeywordCommand}"
Content="{DynamicResource plugin_explorer_edit}" />
</StackPanel>
</DockPanel>
</TabItem>
<TabItem
Name="expAccessLinks"
Width="Auto"
Header="{DynamicResource plugin_explorer_quickaccesslinks_header}"
Style="{DynamicResource ExplorerTabItem}">
<ScrollViewer>
<DockPanel HorizontalAlignment="Stretch">
<Border
Margin="10 10 10 5"
BorderBrush="{DynamicResource PopupButtonAreaBorderColor}"
BorderThickness="1"
DockPanel.Dock="Top">
<ListView
x:Name="lbxAccessLinks"
Height="200"
AllowDrop="True"
BorderThickness="1"
DragEnter="lbxAccessLinks_DragEnter"
Drop="LbxAccessLinks_OnDrop"
ItemTemplate="{StaticResource ListViewTemplateAccessLinks}"
ItemsSource="{Binding Settings.QuickAccessLinks}"
SelectedItem="{Binding SelectedQuickAccessLink}" />
</Border>
<StackPanel
HorizontalAlignment="Right"
DockPanel.Dock="Bottom"
Orientation="Horizontal">
<Button
MinWidth="100"
Margin="10"
Command="{Binding RemoveLinkCommand}"
CommandParameter="QuickAccessLink"
Content="{DynamicResource plugin_explorer_delete}" />
<Button
MinWidth="100"
Margin="10"
Command="{Binding EditLinkCommand}"
CommandParameter="QuickAccessLink"
Content="{DynamicResource plugin_explorer_edit}" />
<Button
MinWidth="100"
Margin="10"
Command="{Binding AddLinkCommand}"
CommandParameter="QuickAccessLink"
Content="{DynamicResource plugin_explorer_add}" />
</StackPanel>
</DockPanel>
</ScrollViewer>
</TabItem>
<TabItem
Width="Auto"
Header="{DynamicResource plugin_explorer_indexsearchexcludedpaths_header}"
Style="{DynamicResource ExplorerTabItem}">
<ScrollViewer>
<DockPanel HorizontalAlignment="Stretch">
<Border
Margin="10 10 10 5"
BorderBrush="{DynamicResource PopupButtonAreaBorderColor}"
BorderThickness="1"
DockPanel.Dock="Top">
<ListView
Name="lbxExcludedPaths"
Height="200"
AllowDrop="True"
DragEnter="lbxAccessLinks_DragEnter"
Drop="LbxExcludedPaths_OnDrop"
ItemTemplate="{StaticResource ListViewTemplateAccessLinks}"
ItemsSource="{Binding Settings.IndexSearchExcludedSubdirectoryPaths}"
SelectedItem="{Binding SelectedIndexSearchExcludedPath}" />
</Border>
<StackPanel
HorizontalAlignment="Right"
DockPanel.Dock="Bottom"
Orientation="Horizontal">
<Button
MinWidth="100"
Margin="10"
Command="{Binding RemoveLinkCommand}"
CommandParameter="IndexSearchExcludedPaths"
Content="{DynamicResource plugin_explorer_delete}" />
<Button
MinWidth="100"
Margin="10"
Command="{Binding EditLinkCommand}"
CommandParameter="IndexSearchExcludedPaths"
Content="{DynamicResource plugin_explorer_edit}" />
<Button
MinWidth="100"
Margin="10"
Command="{Binding AddLinkCommand}"
CommandParameter="IndexSearchExcludedPaths"
Content="{DynamicResource plugin_explorer_add}" />
</StackPanel>
</DockPanel>
</ScrollViewer>
</TabItem>
</TabControl>
</Grid>
</UserControl>