mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
InitProgressbarAnimation is now triggered by the progress bar's Loaded event instead of during main window initialization. This ensures the animation starts only after the progress bar is fully loaded, improving reliability and preventing potential UI timing issues.
546 lines
31 KiB
XML
546 lines
31 KiB
XML
<Window
|
|
x:Class="Flow.Launcher.MainWindow"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:converters="clr-namespace:Flow.Launcher.Converters"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:flowlauncher="clr-namespace:Flow.Launcher"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern"
|
|
xmlns:vm="clr-namespace:Flow.Launcher.ViewModel"
|
|
Name="FlowMainWindow"
|
|
Title="Flow Launcher"
|
|
Width="{Binding MainWindowWidth, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
|
MinWidth="400"
|
|
MinHeight="30"
|
|
d:DataContext="{d:DesignInstance Type=vm:MainViewModel}"
|
|
AllowDrop="True"
|
|
AllowsTransparency="True"
|
|
Background="Transparent"
|
|
Closed="OnClosed"
|
|
Closing="OnClosing"
|
|
Deactivated="OnDeactivated"
|
|
Icon="Images/app.png"
|
|
Left="{Binding Settings.WindowLeft, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
|
Loaded="OnLoaded"
|
|
LocationChanged="OnLocationChanged"
|
|
PreviewKeyDown="OnKeyDown"
|
|
PreviewKeyUp="OnKeyUp"
|
|
PreviewMouseMove="OnPreviewMouseMove"
|
|
ResizeMode="CanResize"
|
|
ShowInTaskbar="False"
|
|
SizeToContent="Height"
|
|
SourceInitialized="OnSourceInitialized"
|
|
Topmost="True"
|
|
Visibility="{Binding MainWindowVisibility, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
|
WindowStartupLocation="Manual"
|
|
WindowStyle="None"
|
|
mc:Ignorable="d">
|
|
<!-- WindowChrome -->
|
|
<WindowChrome.WindowChrome>
|
|
<WindowChrome CaptionHeight="9" />
|
|
</WindowChrome.WindowChrome>
|
|
<Window.Resources>
|
|
<converters:QuerySuggestionBoxConverter x:Key="QuerySuggestionBoxConverter" />
|
|
<converters:BorderClipConverter x:Key="BorderClipConverter" />
|
|
<converters:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter" />
|
|
<converters:SplitterConverter x:Key="SplitterConverter" />
|
|
<converters:BoolToIMEConversionModeConverter x:Key="BoolToIMEConversionModeConverter" />
|
|
<converters:BoolToIMEStateConverter x:Key="BoolToIMEStateConverter" />
|
|
<converters:StringToKeyBindingConverter x:Key="StringToKeyBindingConverter" />
|
|
</Window.Resources>
|
|
<Window.InputBindings>
|
|
<KeyBinding Key="Escape" Command="{Binding EscCommand}" />
|
|
<KeyBinding Key="F5" Command="{Binding ReloadPluginDataCommand}" />
|
|
<KeyBinding
|
|
Key="Home"
|
|
Command="{Binding SelectFirstResultCommand}"
|
|
Modifiers="Alt" />
|
|
<KeyBinding
|
|
Key="End"
|
|
Command="{Binding SelectLastResultCommand}"
|
|
Modifiers="Alt" />
|
|
<KeyBinding
|
|
Key="R"
|
|
Command="{Binding ReQueryCommand}"
|
|
Modifiers="Ctrl" />
|
|
<KeyBinding
|
|
Key="OemCloseBrackets"
|
|
Command="{Binding IncreaseWidthCommand}"
|
|
Modifiers="Control" />
|
|
<KeyBinding
|
|
Key="OemOpenBrackets"
|
|
Command="{Binding DecreaseWidthCommand}"
|
|
Modifiers="Control" />
|
|
<KeyBinding
|
|
Key="OemPlus"
|
|
Command="{Binding IncreaseMaxResultCommand}"
|
|
Modifiers="Control" />
|
|
<KeyBinding
|
|
Key="OemMinus"
|
|
Command="{Binding DecreaseMaxResultCommand}"
|
|
Modifiers="Control" />
|
|
<KeyBinding
|
|
Key="Enter"
|
|
Command="{Binding OpenResultCommand}"
|
|
Modifiers="Ctrl+Shift" />
|
|
<KeyBinding
|
|
Key="Enter"
|
|
Command="{Binding LoadContextMenuCommand}"
|
|
Modifiers="Shift" />
|
|
<KeyBinding Key="Enter" Command="{Binding OpenResultCommand}" />
|
|
<KeyBinding
|
|
Key="Enter"
|
|
Command="{Binding OpenResultCommand}"
|
|
Modifiers="Ctrl" />
|
|
<KeyBinding
|
|
Key="Enter"
|
|
Command="{Binding OpenResultCommand}"
|
|
Modifiers="Alt" />
|
|
<KeyBinding
|
|
Key="D1"
|
|
Command="{Binding OpenResultCommand}"
|
|
CommandParameter="0"
|
|
Modifiers="{Binding OpenResultCommandModifiers}" />
|
|
<KeyBinding
|
|
Key="D2"
|
|
Command="{Binding OpenResultCommand}"
|
|
CommandParameter="1"
|
|
Modifiers="{Binding OpenResultCommandModifiers}" />
|
|
<KeyBinding
|
|
Key="D3"
|
|
Command="{Binding OpenResultCommand}"
|
|
CommandParameter="2"
|
|
Modifiers="{Binding OpenResultCommandModifiers}" />
|
|
<KeyBinding
|
|
Key="D4"
|
|
Command="{Binding OpenResultCommand}"
|
|
CommandParameter="3"
|
|
Modifiers="{Binding OpenResultCommandModifiers}" />
|
|
<KeyBinding
|
|
Key="D5"
|
|
Command="{Binding OpenResultCommand}"
|
|
CommandParameter="4"
|
|
Modifiers="{Binding OpenResultCommandModifiers}" />
|
|
<KeyBinding
|
|
Key="D6"
|
|
Command="{Binding OpenResultCommand}"
|
|
CommandParameter="5"
|
|
Modifiers="{Binding OpenResultCommandModifiers}" />
|
|
<KeyBinding
|
|
Key="D7"
|
|
Command="{Binding OpenResultCommand}"
|
|
CommandParameter="6"
|
|
Modifiers="{Binding OpenResultCommandModifiers}" />
|
|
<KeyBinding
|
|
Key="D8"
|
|
Command="{Binding OpenResultCommand}"
|
|
CommandParameter="7"
|
|
Modifiers="{Binding OpenResultCommandModifiers}" />
|
|
<KeyBinding
|
|
Key="D9"
|
|
Command="{Binding OpenResultCommand}"
|
|
CommandParameter="8"
|
|
Modifiers="{Binding OpenResultCommandModifiers}" />
|
|
<KeyBinding
|
|
Key="D0"
|
|
Command="{Binding OpenResultCommand}"
|
|
CommandParameter="9"
|
|
Modifiers="{Binding OpenResultCommandModifiers}" />
|
|
<KeyBinding
|
|
Key="F12"
|
|
Command="{Binding ToggleGameModeCommand}"
|
|
Modifiers="Ctrl" />
|
|
<KeyBinding
|
|
Key="C"
|
|
Command="{Binding CopyAlternativeCommand}"
|
|
Modifiers="Ctrl+Shift" />
|
|
<KeyBinding
|
|
Key="{Binding PreviewHotkey, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='key'}"
|
|
Command="{Binding TogglePreviewCommand}"
|
|
Modifiers="{Binding PreviewHotkey, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='modifiers'}" />
|
|
<KeyBinding
|
|
Key="{Binding AutoCompleteHotkey, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='key'}"
|
|
Command="{Binding AutocompleteQueryCommand}"
|
|
Modifiers="{Binding AutoCompleteHotkey, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='modifiers'}" />
|
|
<KeyBinding
|
|
Key="{Binding AutoCompleteHotkey2, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='key'}"
|
|
Command="{Binding AutocompleteQueryCommand}"
|
|
Modifiers="{Binding AutoCompleteHotkey2, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='modifiers'}" />
|
|
<KeyBinding
|
|
Key="{Binding SelectNextItemHotkey, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='key'}"
|
|
Command="{Binding SelectNextItemCommand}"
|
|
Modifiers="{Binding SelectNextItemHotkey, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='modifiers'}" />
|
|
<KeyBinding
|
|
Key="{Binding SelectPrevItemHotkey, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='key'}"
|
|
Command="{Binding SelectPrevItemCommand}"
|
|
Modifiers="{Binding SelectPrevItemHotkey, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='modifiers'}" />
|
|
<KeyBinding
|
|
Key="{Binding SelectNextItemHotkey2, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='key'}"
|
|
Command="{Binding SelectNextItemCommand}"
|
|
Modifiers="{Binding SelectNextItemHotkey2, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='modifiers'}" />
|
|
<KeyBinding
|
|
Key="{Binding SelectPrevItemHotkey2, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='key'}"
|
|
Command="{Binding SelectPrevItemCommand}"
|
|
Modifiers="{Binding SelectPrevItemHotkey2, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='modifiers'}" />
|
|
<KeyBinding
|
|
Key="{Binding SettingWindowHotkey, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='key'}"
|
|
Command="{Binding OpenSettingCommand}"
|
|
Modifiers="{Binding SettingWindowHotkey, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='modifiers'}" />
|
|
<KeyBinding
|
|
Key="{Binding OpenHistoryHotkey, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='key'}"
|
|
Command="{Binding LoadHistoryCommand}"
|
|
Modifiers="{Binding OpenHistoryHotkey, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='modifiers'}" />
|
|
<KeyBinding
|
|
Key="{Binding OpenContextMenuHotkey, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='key'}"
|
|
Command="{Binding LoadContextMenuCommand}"
|
|
Modifiers="{Binding OpenContextMenuHotkey, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='modifiers'}" />
|
|
<KeyBinding
|
|
Key="{Binding SelectNextPageHotkey, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='key'}"
|
|
Command="{Binding SelectNextPageCommand}"
|
|
Modifiers="{Binding SelectNextPageHotkey, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='modifiers'}" />
|
|
<KeyBinding
|
|
Key="{Binding SelectPrevPageHotkey, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='key'}"
|
|
Command="{Binding SelectPrevPageCommand}"
|
|
Modifiers="{Binding SelectPrevPageHotkey, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='modifiers'}" />
|
|
<KeyBinding
|
|
Key="{Binding CycleHistoryUpHotkey, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='key'}"
|
|
Command="{Binding ReverseHistoryCommand}"
|
|
Modifiers="{Binding CycleHistoryUpHotkey, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='modifiers'}" />
|
|
<KeyBinding
|
|
Key="{Binding CycleHistoryDownHotkey, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='key'}"
|
|
Command="{Binding ForwardHistoryCommand}"
|
|
Modifiers="{Binding CycleHistoryDownHotkey, Converter={StaticResource StringToKeyBindingConverter}, ConverterParameter='modifiers'}" />
|
|
</Window.InputBindings>
|
|
|
|
<Border MouseDown="OnMouseDown" Style="{DynamicResource WindowBorderStyle}">
|
|
<StackPanel Orientation="Vertical">
|
|
<Grid x:Name="QueryBoxArea">
|
|
<Border MinHeight="30" Style="{DynamicResource QueryBoxBgStyle}">
|
|
<Grid>
|
|
<TextBox
|
|
x:Name="QueryTextPlaceholderBox"
|
|
Height="{Binding MainWindowHeight, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
|
FontSize="{Binding QueryBoxFontSize, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
|
IsEnabled="False"
|
|
Style="{DynamicResource QuerySuggestionBoxStyle}"
|
|
Text="{Binding PlaceholderText, Mode=OneWay}"
|
|
Visibility="Collapsed" />
|
|
<TextBox
|
|
x:Name="QueryTextSuggestionBox"
|
|
Height="{Binding MainWindowHeight, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
|
FontSize="{Binding QueryBoxFontSize, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
|
IsEnabled="False"
|
|
Style="{DynamicResource QuerySuggestionBoxStyle}">
|
|
<TextBox.Text>
|
|
<MultiBinding Converter="{StaticResource QuerySuggestionBoxConverter}">
|
|
<Binding ElementName="QueryTextBox" Mode="OneTime" />
|
|
<Binding ElementName="ResultListBox" Path="SelectedItem" />
|
|
<Binding ElementName="QueryTextBox" Path="Text" />
|
|
</MultiBinding>
|
|
</TextBox.Text>
|
|
</TextBox>
|
|
<TextBox
|
|
x:Name="QueryTextBox"
|
|
Height="{Binding MainWindowHeight, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
|
AllowDrop="True"
|
|
AutomationProperties.Name="{Binding Results.SelectedItem.Result.Title}"
|
|
FontSize="{Binding QueryBoxFontSize, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
|
InputMethod.PreferredImeConversionMode="{Binding StartWithEnglishMode, Converter={StaticResource BoolToIMEConversionModeConverter}}"
|
|
InputMethod.PreferredImeState="{Binding StartWithEnglishMode, Converter={StaticResource BoolToIMEStateConverter}}"
|
|
PreviewDragOver="QueryTextBox_OnPreviewDragOver"
|
|
PreviewKeyUp="QueryTextBox_KeyUp"
|
|
Style="{DynamicResource QueryBoxStyle}"
|
|
Text="{Binding QueryText, Mode=OneWay}"
|
|
TextChanged="QueryTextBox_TextChanged1"
|
|
Visibility="Visible"
|
|
WindowChrome.IsHitTestVisibleInChrome="True">
|
|
<TextBox.CommandBindings>
|
|
<CommandBinding Command="ApplicationCommands.Copy" Executed="QueryTextBox_OnCopy" />
|
|
</TextBox.CommandBindings>
|
|
<TextBox.ContextMenu>
|
|
<ContextMenu MinWidth="160">
|
|
<MenuItem Command="ApplicationCommands.Cut" Header="{DynamicResource cut}">
|
|
<MenuItem.Icon>
|
|
<ui:FontIcon Glyph="" />
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem Command="ApplicationCommands.Copy" Header="{DynamicResource copy}">
|
|
<MenuItem.Icon>
|
|
<ui:FontIcon Glyph="" />
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem Command="ApplicationCommands.Paste" Header="{DynamicResource paste}">
|
|
<MenuItem.Icon>
|
|
<ui:FontIcon Glyph="" />
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<Separator
|
|
Margin="0"
|
|
Padding="0 4 0 4"
|
|
Background="{DynamicResource ContextSeparator}" />
|
|
<MenuItem Click="OnContextMenusForSettingsClick" Header="{DynamicResource flowlauncher_settings}">
|
|
<MenuItem.Icon>
|
|
<ui:FontIcon Glyph="" />
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
<MenuItem Command="{Binding EscCommand}" Header="{DynamicResource closeWindow}">
|
|
<MenuItem.Icon>
|
|
<ui:FontIcon Glyph="" />
|
|
</MenuItem.Icon>
|
|
</MenuItem>
|
|
</ContextMenu>
|
|
</TextBox.ContextMenu>
|
|
</TextBox>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<StackPanel
|
|
x:Name="ClockPanel"
|
|
IsHitTestVisible="False"
|
|
Opacity="{Binding ClockPanelOpacity}"
|
|
Style="{DynamicResource ClockPanel}"
|
|
Visibility="{Binding ClockPanelVisibility}">
|
|
<TextBlock
|
|
x:Name="ClockBox"
|
|
Style="{DynamicResource ClockBox}"
|
|
Text="{Binding ClockText}"
|
|
Visibility="{Binding Settings.UseClock, Converter={StaticResource BoolToVisibilityConverter}}" />
|
|
<TextBlock
|
|
x:Name="DateBox"
|
|
Style="{DynamicResource DateBox}"
|
|
Text="{Binding DateText}"
|
|
Visibility="{Binding Settings.UseDate, Converter={StaticResource BoolToVisibilityConverter}}" />
|
|
</StackPanel>
|
|
<Border>
|
|
<Grid WindowChrome.IsHitTestVisibleInChrome="True">
|
|
<Image
|
|
x:Name="PluginActivationIcon"
|
|
HorizontalAlignment="Right"
|
|
VerticalAlignment="Center"
|
|
Panel.ZIndex="2"
|
|
RenderOptions.BitmapScalingMode="HighQuality"
|
|
Source="{Binding PluginIconSource}"
|
|
Stretch="Uniform"
|
|
Style="{DynamicResource PluginActivationIcon}" />
|
|
<Canvas Style="{DynamicResource SearchIconPosition}">
|
|
<Path
|
|
Name="SearchIcon"
|
|
Margin="0"
|
|
Data="{DynamicResource SearchIconImg}"
|
|
Opacity="{Binding SearchIconOpacity}"
|
|
Stretch="Fill"
|
|
Style="{DynamicResource SearchIconStyle}"
|
|
Visibility="{Binding SearchIconVisibility}" />
|
|
</Canvas>
|
|
</Grid>
|
|
</Border>
|
|
<Line
|
|
x:Name="ProgressBar"
|
|
Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Grid}}, Path=ActualWidth}"
|
|
Height="2"
|
|
Margin="12 0 12 0"
|
|
HorizontalAlignment="Center"
|
|
VerticalAlignment="Bottom"
|
|
Loaded="ProgressBar_Loaded"
|
|
StrokeThickness="2"
|
|
Visibility="{Binding ProgressBarVisibility, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
|
X1="-100"
|
|
X2="0"
|
|
Y1="0"
|
|
Y2="0" />
|
|
</Grid>
|
|
|
|
<Grid x:Name="MiddleSeparatorArea" ClipToBounds="True">
|
|
<ContentControl>
|
|
<ContentControl.Style>
|
|
<Style TargetType="ContentControl">
|
|
<Setter Property="Visibility" Value="Visible" />
|
|
<Style.Triggers>
|
|
<MultiDataTrigger>
|
|
<MultiDataTrigger.Conditions>
|
|
<Condition Binding="{Binding ElementName=ResultListBox, Path=Items.Count}" Value="0" />
|
|
<Condition Binding="{Binding ElementName=ResultContextMenu, Path=Visibility}" Value="Collapsed" />
|
|
<Condition Binding="{Binding ElementName=History, Path=Visibility}" Value="Collapsed" />
|
|
</MultiDataTrigger.Conditions>
|
|
<MultiDataTrigger.Setters>
|
|
<Setter Property="Visibility" Value="Collapsed" />
|
|
<Setter Property="Margin" Value="0" />
|
|
<Setter Property="Height" Value="0" />
|
|
</MultiDataTrigger.Setters>
|
|
</MultiDataTrigger>
|
|
</Style.Triggers>
|
|
<!--<Style.Triggers>
|
|
<DataTrigger Binding="{Binding ElementName=ResultListBox, Path=Visibility}" Value="Visible">
|
|
<Setter Property="Visibility" Value="Visible" />
|
|
</DataTrigger>
|
|
<DataTrigger Binding="{Binding ElementName=ResultContextMenu, Path=Visibility}" Value="Visible">
|
|
<Setter Property="Visibility" Value="Visible" />
|
|
</DataTrigger>
|
|
<DataTrigger Binding="{Binding ElementName=History, Path=Visibility}" Value="Visible">
|
|
<Setter Property="Visibility" Value="Visible" />
|
|
</DataTrigger>
|
|
</Style.Triggers>-->
|
|
</Style>
|
|
</ContentControl.Style>
|
|
<Rectangle
|
|
Name="MiddleSeparator"
|
|
Width="Auto"
|
|
HorizontalAlignment="Stretch"
|
|
Style="{DynamicResource SeparatorStyle}" />
|
|
</ContentControl>
|
|
</Grid>
|
|
|
|
<Border x:Name="ResultPreviewAreaBoarder" Style="{DynamicResource WindowRadius}">
|
|
<Border.Clip>
|
|
<MultiBinding Converter="{StaticResource BorderClipConverter}">
|
|
<Binding Path="ActualWidth" RelativeSource="{RelativeSource Self}" />
|
|
<Binding Path="ActualHeight" RelativeSource="{RelativeSource Self}" />
|
|
<Binding Path="CornerRadius" RelativeSource="{RelativeSource Self}" />
|
|
</MultiBinding>
|
|
</Border.Clip>
|
|
|
|
<Grid x:Name="ResultPreviewArea">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*" MinWidth="80" />
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="0.85*" MinWidth="244" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<StackPanel
|
|
x:Name="ResultArea"
|
|
Grid.Column="0"
|
|
Grid.ColumnSpan="{Binding ResultAreaColumn}">
|
|
<ContentControl>
|
|
<flowlauncher:ResultListBox
|
|
x:Name="ResultListBox"
|
|
DataContext="{Binding Results}"
|
|
LeftClickResultCommand="{Binding LeftClickResultCommand}"
|
|
RightClickResultCommand="{Binding RightClickResultCommand}" />
|
|
</ContentControl>
|
|
<ContentControl>
|
|
<flowlauncher:ResultListBox
|
|
x:Name="ResultContextMenu"
|
|
DataContext="{Binding ContextMenu}"
|
|
LeftClickResultCommand="{Binding LeftClickResultCommand}"
|
|
RightClickResultCommand="{Binding RightClickResultCommand}" />
|
|
</ContentControl>
|
|
<ContentControl>
|
|
<flowlauncher:ResultListBox
|
|
x:Name="History"
|
|
DataContext="{Binding History}"
|
|
LeftClickResultCommand="{Binding LeftClickResultCommand}"
|
|
RightClickResultCommand="{Binding RightClickResultCommand}" />
|
|
</ContentControl>
|
|
</StackPanel>
|
|
|
|
<GridSplitter
|
|
x:Name="PreviewMiddleSeparator"
|
|
Grid.Column="1"
|
|
Margin="0"
|
|
HorizontalAlignment="Center"
|
|
VerticalAlignment="Stretch"
|
|
Background="Transparent"
|
|
ShowsPreview="True"
|
|
Visibility="{Binding InternalPreviewVisible, Converter={StaticResource BoolToVisibilityConverter}}">
|
|
<GridSplitter.Template>
|
|
<ControlTemplate TargetType="{x:Type GridSplitter}">
|
|
<Border Style="{DynamicResource PreviewBorderStyle}" />
|
|
</ControlTemplate>
|
|
</GridSplitter.Template>
|
|
</GridSplitter>
|
|
|
|
<Grid
|
|
x:Name="Preview"
|
|
Grid.Column="2"
|
|
VerticalAlignment="Stretch"
|
|
Style="{DynamicResource PreviewArea}"
|
|
Visibility="{Binding InternalPreviewVisible, Converter={StaticResource BoolToVisibilityConverter}}">
|
|
<Border
|
|
MinHeight="380"
|
|
d:DataContext="{d:DesignInstance vm:ResultViewModel}"
|
|
DataContext="{Binding PreviewSelectedItem, Mode=OneWay}"
|
|
Visibility="{Binding ShowDefaultPreview}">
|
|
<Grid
|
|
Margin="0 0 10 5"
|
|
VerticalAlignment="Stretch"
|
|
Background="Transparent">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="*" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
<Grid Grid.Row="0" VerticalAlignment="Center">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
<TextBlock
|
|
x:Name="PreviewGlyphIcon"
|
|
Grid.Row="0"
|
|
Height="Auto"
|
|
Margin="0 16 0 0"
|
|
FontFamily="{Binding Glyph.FontFamily}"
|
|
Style="{DynamicResource PreviewGlyph}"
|
|
Text="{Binding Glyph.Glyph}"
|
|
Visibility="{Binding ShowGlyph}" />
|
|
<Image
|
|
x:Name="PreviewImageIcon"
|
|
Grid.Row="0"
|
|
MaxHeight="320"
|
|
Margin="0 16 0 0"
|
|
HorizontalAlignment="Center"
|
|
Source="{Binding PreviewImage}"
|
|
StretchDirection="DownOnly"
|
|
Visibility="{Binding ShowPreviewImage}">
|
|
<Image.Style>
|
|
<Style TargetType="{x:Type Image}">
|
|
<Setter Property="MaxWidth" Value="96" />
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding UseBigThumbnail}" Value="True">
|
|
<Setter Property="MaxWidth" Value="{Binding ElementName=Preview, Path=ActualWidth}" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Image.Style>
|
|
</Image>
|
|
<TextBlock
|
|
x:Name="PreviewTitle"
|
|
Grid.Row="1"
|
|
Margin="0 6 0 16"
|
|
HorizontalAlignment="Stretch"
|
|
Style="{DynamicResource PreviewItemTitleStyle}"
|
|
Text="{Binding Result.Title}"
|
|
TextAlignment="Center"
|
|
TextWrapping="Wrap" />
|
|
</Grid>
|
|
<StackPanel Grid.Row="1">
|
|
<StackPanel.Style>
|
|
<Style TargetType="{x:Type StackPanel}">
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding ElementName=PreviewSubTitle, UpdateSourceTrigger=PropertyChanged, Path=Text.Length}" Value="0">
|
|
<Setter Property="Visibility" Value="Collapsed" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</StackPanel.Style>
|
|
<Separator Style="{DynamicResource PreviewSep}" />
|
|
<TextBlock
|
|
x:Name="PreviewSubTitle"
|
|
Style="{DynamicResource PreviewItemSubTitleStyle}"
|
|
Text="{Binding PreviewDescription}" />
|
|
</StackPanel>
|
|
</Grid>
|
|
</Border>
|
|
<Border
|
|
MinHeight="380"
|
|
MaxHeight="{Binding ElementName=ResultListBox, Path=ActualHeight}"
|
|
Padding="0 0 10 10"
|
|
Visibility="{Binding ShowCustomizedPreview}">
|
|
<ContentControl Content="{Binding CustomizedPreviewControl}" />
|
|
</Border>
|
|
</Grid>
|
|
</Grid>
|
|
</Border>
|
|
</StackPanel>
|
|
</Border>
|
|
</Window>
|