Files
QuickLook/QuickLook/ViewerWindow.xaml
2018-11-07 22:30:39 +02:00

179 lines
11 KiB
XML

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:busyDecorator="clr-namespace:QuickLook.Controls.BusyDecorator"
xmlns:glassLayer="clr-namespace:QuickLook.Controls.GlassLayer"
xmlns:converters="clr-namespace:QuickLook.Converters"
xmlns:controls="clr-namespace:QuickLook.Controls"
mc:Ignorable="d" x:Class="QuickLook.ViewerWindow" x:Name="mainWindow"
UseLayoutRounding="True"
d:DesignWidth="624" d:DesignHeight="700"
MinWidth="400" MinHeight="200"
Focusable="False"
ResizeMode="CanResize"
BorderBrush="{DynamicResource CaptionBackground}"
Foreground="{DynamicResource WindowTextForeground}"
Background="{DynamicResource MainWindowBackground}"
ShowInTaskbar="False"
Title="{Binding ElementName=titleAreaText, Path=Text}"
ShowActivated="False">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/QuickLook.Common;component/Styles/MainWindowStyles.xaml" />
</ResourceDictionary.MergedDictionaries>
<converters:WindowStateMaximizedToThicknessConverter x:Key="WindowStateMaximizedToThicknessConverter" />
<converters:WindowStateNormalToThicknessConverter x:Key="WindowStateNormalToThicknessConverter" />
<converters:BooleanToVisibilityCollapsedConverter x:Key="BooleanToVisibilityCollapsedConverter" />
<converters:BooleanToVisibilityHiddenConverter x:Key="BooleanToVisibilityHiddenConverter" />
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
</ResourceDictionary>
</Window.Resources>
<WindowChrome.WindowChrome>
<WindowChrome CaptionHeight="{StaticResource MainWindowCaptionHeight}" CornerRadius="0"
GlassFrameThickness=" 1"
ResizeBorderThickness="{StaticResource MainWindowResizeThickness}"
UseAeroCaptionButtons="False" />
</WindowChrome.WindowChrome>
<Window.Style>
<Style TargetType="Window">
<Setter Property="BorderThickness" Value="{StaticResource MainWindowShadowMarginThickness}" />
</Style>
</Window.Style>
<Grid x:Name="windowFrameContainer"
Margin="{Binding ElementName=mainWindow, Path=WindowState, Converter={StaticResource WindowStateMaximizedToThicknessConverter}, ConverterParameter={StaticResource MainWindowResizeThickness}}">
<Grid x:Name="viewerRootContainer" ZIndex="190">
<Grid x:Name="windowCaptionContainer" Height="{StaticResource MainWindowCaptionHeight}"
VerticalAlignment="Top"
ZIndex="100">
<Grid.Style>
<Style TargetType="Grid">
<Setter Property="Opacity" Value="1" />
<Style.Triggers>
<DataTrigger Binding="{Binding ContextObject.TitlebarAutoHide, ElementName=mainWindow}" Value="True">
<Setter Property="Opacity" Value="0" />
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
<Grid.Resources>
<Storyboard x:Key="ShowCaptionContainerStoryboard" Completed="AutoHideCaptionContainer">
<DoubleAnimation
Storyboard.Target="{Binding Source={x:Reference windowCaptionContainer}}"
Storyboard.TargetProperty="Opacity" To="1" Duration="0:0:0.05" />
</Storyboard>
<Storyboard x:Key="HideCaptionContainerStoryboard">
<DoubleAnimationUsingKeyFrames
Storyboard.Target="{Binding Source={x:Reference windowCaptionContainer}}"
Storyboard.TargetProperty="Opacity">
<DoubleAnimationUsingKeyFrames.KeyFrames>
<LinearDoubleKeyFrame Value="1" KeyTime="0:0:0" />
<LinearDoubleKeyFrame Value="1" KeyTime="0:0:1" />
<LinearDoubleKeyFrame Value="0" KeyTime="0:0:1.05" />
</DoubleAnimationUsingKeyFrames.KeyFrames>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</Grid.Resources>
<glassLayer:GlassLayer OverlayColor="{DynamicResource CaptionBackground}"
BlurredElement="{Binding ElementName=containerPanel}"
ColorOverlayVisibility="{Binding ContextObject.TitlebarColourVisibility, ElementName=mainWindow, Converter={StaticResource BooleanToVisibilityConverter}}"
GlassVisibility="{Binding ContextObject.TitlebarBlurVisibility, ElementName=mainWindow, Converter={StaticResource BooleanToVisibilityConverter}}"
NoiseVisibility="Visible" />
<DockPanel>
<Button DockPanel.Dock="Right" x:Name="buttonCloseWindow"
Style="{StaticResource CaptionCloseButtonStyle}" Content="&#xE894;" />
<Button DockPanel.Dock="Right" x:Name="buttonWindowStatus"
Visibility="{Binding ContextObject.CanResize, ElementName=mainWindow, Converter={StaticResource BooleanToVisibilityConverter}}">
<Button.Style>
<Style TargetType="Button" BasedOn="{StaticResource CaptionButtonStyle}">
<Setter Property="Content" Value="&#xE740;" />
<Style.Triggers>
<DataTrigger Binding="{Binding WindowState, ElementName=mainWindow}"
Value="Maximized">
<Setter Property="Content" Value="&#xE73F;" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
<Button DockPanel.Dock="Right" x:Name="buttonShare" Style="{StaticResource CaptionButtonStyle}"
Content="&#xE72D;" ToolTip="Share" />
<Button DockPanel.Dock="Right" x:Name="buttonOpenWith" Style="{StaticResource CaptionButtonStyle}"
Content="&#xE7AC;" ToolTip="Open With" />
<Button x:Name="buttonOpen" DockPanel.Dock="Right"
Style="{StaticResource CaptionTextButtonStyle}">
<Button.Content>
<TextBlock x:Name="buttonOpenText" VerticalAlignment="Center">
Open with <Bold>AppName</Bold>
</TextBlock>
</Button.Content>
</Button>
<Button DockPanel.Dock="Left" x:Name="buttonTop" Tag="Auto" ToolTip="Stay on Top">
<Button.Resources>
<Grid x:Key="ContentTop">
<TextBlock>&#xE898;</TextBlock>
<TextBlock>&#xE872;</TextBlock>
</Grid>
</Button.Resources>
<Button.Style>
<Style TargetType="Button" BasedOn="{StaticResource CaptionButtonStyle}">
<Setter Property="Content" Value="&#xE898;" />
<Style.Triggers>
<Trigger Property="Tag" Value="Auto">
<Setter Property="Content" Value="&#xE898;" />
</Trigger>
<Trigger Property="Tag" Value="Top">
<Setter Property="Content" Value="{StaticResource ContentTop}" />
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
<Button DockPanel.Dock="Left" x:Name="buttonPin" Tag="Auto" ToolTip="Prevent Closing">
<Button.Resources>
<Grid x:Key="ContentPin">
<TextBlock>&#xE840;</TextBlock>
<TextBlock>&#xE842;</TextBlock>
</Grid>
</Button.Resources>
<Button.Style>
<Style TargetType="Button" BasedOn="{StaticResource CaptionButtonStyle}">
<Setter Property="Content" Value="&#xE840;" />
<Style.Triggers>
<Trigger Property="Tag" Value="Auto">
<Setter Property="Content" Value="&#xE840;" />
</Trigger>
<Trigger Property="Tag" Value="Pin">
<Setter Property="Content" Value="{StaticResource ContentPin}" />
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
<Grid x:Name="titleArea" Background="Transparent">
<TextBlock x:Name="titleAreaText" Text="{Binding ContextObject.Title, ElementName=mainWindow}" FontSize="12"
HorizontalAlignment="Left" TextTrimming="CharacterEllipsis"
VerticalAlignment="Center" Margin="5,0" />
</Grid>
</DockPanel>
</Grid>
<DockPanel x:Name="containerPanel" ZIndex="80">
<Grid DockPanel.Dock="Top" Height="{StaticResource MainWindowCaptionHeight}"
Visibility="{Binding ContextObject.TitlebarOverlap, ElementName=mainWindow, Converter={StaticResource BooleanToVisibilityCollapsedConverter}}" />
<ContentControl x:Name="container"
Visibility="{Binding ElementName=mainWindow, Path=ContextObject.IsBusy, Converter={StaticResource BooleanToVisibilityHiddenConverter}}"
Foreground="{DynamicResource WindowTextForeground}"
Content="{Binding ContextObject.ViewerContent, ElementName=mainWindow}" />
</DockPanel>
</Grid>
<Grid x:Name="busyIndicatorLayer" ZIndex="200"
Visibility="{Binding ElementName=mainWindow, Path=ContextObject.IsBusy, Converter={StaticResource BooleanToVisibilityConverter}}">
<busyDecorator:BusyDecorator x:Name="busyDecorator"
IsBusyIndicatorShowing="{Binding ElementName=mainWindow, Path=ContextObject.IsBusy}"
VerticalAlignment="Center"
HorizontalAlignment="Center" />
</Grid>
</Grid>
</Window>