mirror of
https://github.com/QL-Win/QuickLook.git
synced 2026-02-28 01:00:17 +08:00
186 lines
12 KiB
XML
186 lines
12 KiB
XML
<Window
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:fa="http://schemas.fontawesome.io/icons/"
|
|
xmlns:local="clr-namespace:QuickLook"
|
|
xmlns:control="clr-namespace:QuickLook.Controls"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
xmlns:converters="clr-namespace:QuickLook.Converters"
|
|
mc:Ignorable="d" x:Class="QuickLook.MainWindowTransparent" x:Name="mainWindow"
|
|
UseLayoutRounding="True"
|
|
d:DesignWidth="624" d:DesignHeight="700"
|
|
MinWidth="275" MinHeight="150"
|
|
WindowStartupLocation="CenterScreen"
|
|
Focusable="False" WindowStyle="None"
|
|
Background="#E5FAFAFA" AllowsTransparency="True"
|
|
ShowActivated="False" ShowInTaskbar="False">
|
|
<Window.Resources>
|
|
<converters:BooleanToResizeModeConverter x:Key="BooleanToResizeModeConverter" />
|
|
<converters:BooleanToResizeBorderThicknessConverter x:Key="BooleanToResizeBorderThicknessConverter" />
|
|
<converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
|
|
</Window.Resources>
|
|
<Window.ResizeMode>
|
|
<Binding Converter="{StaticResource BooleanToResizeModeConverter}" ElementName="mainWindow"
|
|
Path="ContextObject.CanResize" />
|
|
</Window.ResizeMode>
|
|
<WindowChrome.WindowChrome>
|
|
<WindowChrome x:Name="chrome"
|
|
ResizeBorderThickness="{Binding ContextObject.CanResize, Converter={StaticResource BooleanToResizeBorderThicknessConverter}, ElementName=mainWindow}"
|
|
UseAeroCaptionButtons="False" />
|
|
</WindowChrome.WindowChrome>
|
|
<Border x:Name="windowBorder" BorderThickness="1" BorderBrush="#FF7B7B7B">
|
|
<Grid>
|
|
<DockPanel x:Name="windowPanel">
|
|
<DockPanel.Style>
|
|
<Style TargetType="{x:Type DockPanel}">
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding ContextObject.IsBusy, ElementName=mainWindow, Mode=OneWay}"
|
|
Value="False">
|
|
<DataTrigger.EnterActions>
|
|
<BeginStoryboard>
|
|
<Storyboard>
|
|
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="0" To="1"
|
|
BeginTime="0:0:0" Duration="0:0:0" />
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</DataTrigger.EnterActions>
|
|
<DataTrigger.ExitActions>
|
|
<BeginStoryboard>
|
|
<Storyboard>
|
|
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="1" To="0"
|
|
BeginTime="0:0:0" Duration="0:0:0" />
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</DataTrigger.ExitActions>
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</DockPanel.Style>
|
|
<DockPanel x:Name="titlebar" Height="28" Dock="Top">
|
|
<fa:ImageAwesome DockPanel.Dock="Right" x:Name="buttonCloseWindow" Icon="TimesCircle"
|
|
WindowChrome.IsHitTestVisibleInChrome="True"
|
|
Width="15" Height="15" Margin="5,0,10,0" Foreground="Gray"
|
|
Cursor="Hand" />
|
|
<fa:ImageAwesome DockPanel.Dock="Right" x:Name="buttonWindowStatus"
|
|
WindowChrome.IsHitTestVisibleInChrome="True"
|
|
Width="14" Height="14" Margin="5,0,5,0" Foreground="Gray"
|
|
Visibility="{Binding ContextObject.CanResize,ElementName=mainWindow,Converter={StaticResource BooleanToVisibilityConverter}}"
|
|
Cursor="Hand">
|
|
<fa:ImageAwesome.Style>
|
|
<Style TargetType="{x:Type fa:ImageAwesome}">
|
|
<Setter Property="Icon" Value="WindowMaximize" />
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding WindowState, ElementName=mainWindow}"
|
|
Value="Maximized">
|
|
<Setter Property="Icon" Value="WindowRestore" />
|
|
</DataTrigger>
|
|
<DataTrigger Binding="{Binding WindowState, ElementName=mainWindow}"
|
|
Value="Normal">
|
|
<Setter Property="Icon" Value="WindowMaximize" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</fa:ImageAwesome.Style>
|
|
</fa:ImageAwesome>
|
|
<fa:ImageAwesome DockPanel.Dock="Right" x:Name="buttonShare" Icon="ShareAlt"
|
|
WindowChrome.IsHitTestVisibleInChrome="True"
|
|
Width="14" Height="14" Margin="10,0,5,0" Foreground="Gray"
|
|
Cursor="Hand" />
|
|
<Button x:Name="buttonOpenWith" DockPanel.Dock="Right" Content="Open with..." Height="20"
|
|
Margin="10,0,0,0" Padding="5,0"
|
|
Focusable="False" Cursor="Hand"
|
|
Background="#E5EEEEEE" BorderBrush="#E59A9A9A"
|
|
WindowChrome.IsHitTestVisibleInChrome="True" Foreground="#FF404040">
|
|
<Button.ContentTemplate>
|
|
<DataTemplate>
|
|
<ContentPresenter Content="{Binding}" RecognizesAccessKey="False" />
|
|
</DataTemplate>
|
|
</Button.ContentTemplate>
|
|
</Button>
|
|
<fa:ImageAwesome DockPanel.Dock="Left" x:Name="buttonPin" Icon="ThumbTack"
|
|
WindowChrome.IsHitTestVisibleInChrome="True"
|
|
Width="14" Height="14" Margin="10,0"
|
|
Cursor="Hand">
|
|
<fa:ImageAwesome.Style>
|
|
<Style TargetType="{x:Type fa:ImageAwesome}">
|
|
<Setter Property="Foreground" Value="Gray" />
|
|
<Setter Property="LayoutTransform">
|
|
<Setter.Value>
|
|
<RotateTransform Angle="-45" />
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding Pinned, ElementName=mainWindow}" Value="True">
|
|
<Setter Property="Foreground" Value="Black" />
|
|
<Setter Property="LayoutTransform">
|
|
<Setter.Value>
|
|
<RotateTransform Angle="0" />
|
|
</Setter.Value>
|
|
</Setter>
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</fa:ImageAwesome.Style>
|
|
</fa:ImageAwesome>
|
|
<!-- set grid.background colour makes it clickable -->
|
|
<Grid x:Name="titleArea" Background="Transparent">
|
|
<TextBlock Text="{Binding ContextObject.Title, ElementName=mainWindow}" FontSize="14"
|
|
HorizontalAlignment="Center"
|
|
VerticalAlignment="Center" Margin="5,0" />
|
|
</Grid>
|
|
</DockPanel>
|
|
<Grid>
|
|
<ContentControl x:Name="container"
|
|
Content="{Binding ContextObject.ViewerContent, ElementName=mainWindow}" />
|
|
</Grid>
|
|
</DockPanel>
|
|
<Grid x:Name="busyIndicatorLayer">
|
|
<Grid.Style>
|
|
<Style TargetType="{x:Type Grid}">
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding ContextObject.IsBusy, ElementName=mainWindow, Mode=OneWay}"
|
|
Value="False">
|
|
<DataTrigger.EnterActions>
|
|
<BeginStoryboard>
|
|
<Storyboard>
|
|
<ParallelTimeline>
|
|
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="1" To="0"
|
|
BeginTime="0:0:0" Duration="0:0:0.05" />
|
|
<ObjectAnimationUsingKeyFrames
|
|
Storyboard.TargetProperty="(UIElement.Visibility)">
|
|
<DiscreteObjectKeyFrame KeyTime="0:0:0.05"
|
|
Value="{x:Static Visibility.Hidden}" />
|
|
</ObjectAnimationUsingKeyFrames>
|
|
</ParallelTimeline>
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</DataTrigger.EnterActions>
|
|
<DataTrigger.ExitActions>
|
|
<BeginStoryboard>
|
|
<Storyboard>
|
|
<ParallelTimeline>
|
|
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="0" To="1"
|
|
BeginTime="0:0:0" Duration="0:0:0" />
|
|
<ObjectAnimationUsingKeyFrames
|
|
Storyboard.TargetProperty="(UIElement.Visibility)">
|
|
<DiscreteObjectKeyFrame KeyTime="0:0:0"
|
|
Value="{x:Static Visibility.Visible}" />
|
|
</ObjectAnimationUsingKeyFrames>
|
|
</ParallelTimeline>
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</DataTrigger.ExitActions>
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Grid.Style>
|
|
<!--IsBusyIndicatorShowing="{Binding IsVisible, ElementName=busyIndicatorLayer}"-->
|
|
<control:BusyDecorator x:Name="busyDecorator"
|
|
IsBusyIndicatorShowing="True"
|
|
VerticalAlignment="Center"
|
|
HorizontalAlignment="Center" />
|
|
</Grid>
|
|
</Grid>
|
|
</Border>
|
|
</Window> |