livia-test/Livia/Views/MainWindow.xaml
2025-03-28 14:31:53 +08:00

505 lines
34 KiB
XML

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:controls="clr-namespace:Livia.Views.Controls"
xmlns:properties="clr-namespace:Livia.Properties"
xmlns:viewModels="clr-namespace:Livia.ViewModels"
xmlns:converters="clr-namespace:Livia.Views.Converters"
xmlns:attachedProperties="clr-namespace:Livia.Views.AttachedProperties"
mc:Ignorable="d"
x:Class="Livia.Views.MainWindow"
d:DataContext="{d:DesignInstance Type=viewModels:MainWindowViewModel}"
Style="{StaticResource LiviaWindow}"
Height="{Binding MainWindowHeight, Mode=TwoWay, Source={x:Static properties:ViewSettings.Default}}"
Width="{Binding MainWindowWidth, Mode=TwoWay, Source={x:Static properties:ViewSettings.Default}}"
Top="{Binding MainWindowTop, Mode=TwoWay, Source={x:Static properties:ViewSettings.Default}}"
Left="{Binding MainWindowLeft, Mode=TwoWay, Source={x:Static properties:ViewSettings.Default}}"
d:DesignWidth="1920"
d:DesignHeight="1040"
Closing="WindowClosing"
SizeChanged="WindowSizeChanged"
PreviewKeyDown="WindowPreviewKeyDown"
PreviewMouseWheel="MainWindowOnPreviewMouseWheel"
PreviewMouseDown="MainWindowOnPreviewMouseDown"
PreviewMouseMove="MainWindowOnPreviewMouseMove"
Activated="WindowActivated"
Background="Transparent"
Title="{StaticResource WindowTitle}"
MinWidth="1024"
MinHeight="738">
<Window.Resources>
<converters:BooleanToVisibilityHiddenConverter x:Key="BooleanToVisibilityHiddenConverter" />
<converters:InverseBooleanToVisibilityHiddenConverter x:Key="InverseBooleanToVisibilityHiddenConverter" />
<converters:IntToFontWeightConverter x:Key="IntToFontWeightConverter" />
<Style TargetType="ScrollBar">
<Setter Property="Background"
Value="White" />
</Style>
<Style TargetType="ToolTip" BasedOn="{StaticResource CustomToolTipStyle}"></Style>
</Window.Resources>
<Window.FontWeight>
<Binding Mode="OneWay"
Path="FontWeight"
Source="{x:Static properties:ViewSettings.Default}"
Converter="{StaticResource IntToFontWeightConverter}" />
</Window.FontWeight>
<materialDesign:DialogHost DialogTheme="Inherit"
IsOpen="{Binding DialogOpen}"
CloseOnClickAway="True"
DialogBackground="Transparent"
OverlayBackground="{StaticResource Black2}"
Identifier="RootDialog">
<Grid Background="{StaticResource PrimaryColorBrush}">
<materialDesign:Transitioner SelectedIndex="{Binding TransitionerSelectedIndex, Mode=OneWay}"
d:SelectedIndex="1"
AutoApplyTransitionOrigins="True">
<materialDesign:TransitionerSlide ClipToBounds="True">
<materialDesign:TransitionerSlide.BackwardWipe>
<materialDesign:CircleWipe />
</materialDesign:TransitionerSlide.BackwardWipe>
<materialDesign:TransitionerSlide.ForwardWipe>
<materialDesign:CircleWipe />
</materialDesign:TransitionerSlide.ForwardWipe>
<Grid DockPanel.Dock="Top"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="80" />
<RowDefinition Height="*" />
<RowDefinition Height="80" />
</Grid.RowDefinitions>
<Grid.Background>
<ImageBrush ImageSource="pack://application:,,,/Livia;Component/Resources/Images/login_background.png"
Stretch="UniformToFill"
RenderOptions.BitmapScalingMode="HighQuality" />
</Grid.Background>
<Border Grid.Row="0"
MouseLeftButtonDown="TitleBarMouseLeftButtonDown"
Background="Transparent">
<StackPanel Orientation="Horizontal"
HorizontalAlignment="Right">
<Button Click="SettingsButtonClick"
Margin="10"
Visibility="{Binding DeveloperMode, Source={x:Static properties:Settings.Default}, Converter={StaticResource BooleanToVisibilityConverter}}"
Style="{StaticResource LiviaPrimaryTextIconButton}"
attachedProperties:IconKindProperties.IconKind="CogOutline"
attachedProperties:StringItemProperties.ItemName="{StaticResource SettingsWindowName }" />
<Grid Visibility="{Binding HideTitleBar, Converter={StaticResource InverseBoolToVisConverter}}">
<controls:MaterialTitleBar Margin="20"
HorizontalAlignment="Right" />
</Grid>
</StackPanel>
</Border>
<Border Grid.Row="1">
<controls:LoginControl x:Name="LoginControl"
VerticalAlignment="Center" />
</Border>
</Grid>
</materialDesign:TransitionerSlide>
<materialDesign:TransitionerSlide ClipToBounds="True">
<materialDesign:TransitionerSlide.BackwardWipe>
<materialDesign:CircleWipe />
</materialDesign:TransitionerSlide.BackwardWipe>
<materialDesign:TransitionerSlide.ForwardWipe>
<materialDesign:CircleWipe />
</materialDesign:TransitionerSlide.ForwardWipe>
<Grid Background="{StaticResource BackgroundColorBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="80" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid Grid.Row="0"
MouseLeftButtonDown="TitleBarMouseLeftButtonDown"
Background="{StaticResource PrimaryColorBrush}"
Margin="0,0,0,1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0"
Orientation="Horizontal">
<TextBlock Margin="20, 0"
VerticalAlignment="Center"
Style="{StaticResource MaterialDesignHeadline4TextBlock}"
Foreground="{StaticResource White1Brush}"
Text="{StaticResource WindowTitle}" />
<StackPanel Orientation="Horizontal">
<Button IsEnabled="{Binding ServerHandler.Processing, Converter={StaticResource InvertBooleanConverter}}"
Visibility="{Binding ShowLoadDataButton, Converter={StaticResource BooleanToVisibilityConverter}}"
Click="ProcessDataButtonClick"
Style="{StaticResource LiviaPrimaryProcessingTextButton}"
Margin="10"
attachedProperties:StringItemProperties.ItemName="{StaticResource LoadDataButtonText }" />
<UniformGrid Visibility="{Binding DataBlockLoader.PlaceholderVisible, Converter={StaticResource InverseBoolToVisConverter}}"
Rows="1">
<Button IsEnabled="{Binding ServerHandler.Processing, Converter={StaticResource InvertBooleanConverter}}"
Visibility="{Binding ShowExportReportButton, Converter={StaticResource BooleanToVisibilityConverter}}"
Click="ExportReportButtonClick"
Style="{StaticResource LiviaDarkProcessingTextButton}"
Margin="10"
attachedProperties:StringItemProperties.ItemName="{StaticResource ExportReportButtonText}" />
<Button IsEnabled="{Binding ServerHandler.Processing, Converter={StaticResource InvertBooleanConverter}}"
Visibility="{Binding ShowCheckReportsButton, Converter={StaticResource BooleanToVisibilityConverter}}"
Click="CheckReportsButtonClick"
Style="{StaticResource LiviaDarkProcessingTextButton}"
Margin="10"
attachedProperties:StringItemProperties.ItemName="{StaticResource CheckReportsButtonText}" />
</UniformGrid>
<Button Click="ShowLeftDrawerButtonClick"
Visibility="{Binding ShowSearchButton, Converter={StaticResource BooleanToVisibilityConverter}}"
Margin="30, 10, 10, 10"
Style="{StaticResource LiviaPrimaryTextIconButton}"
attachedProperties:IconKindProperties.IconKind="Magnify"
attachedProperties:StringItemProperties.ItemName="{StaticResource SearchButtonText }" />
<Button IsEnabled="{Binding ServerHandler.Processing, Converter={StaticResource InvertBooleanConverter}}"
Visibility="{Binding DeveloperMode, Source={x:Static properties:Settings.Default}, Converter={StaticResource BooleanToVisibilityConverter}}"
Click="ImportDataButtonClick"
Style="{StaticResource LiviaDarkProcessingTextButton}"
Margin="10"
attachedProperties:StringItemProperties.ItemName="导入数据" />
</StackPanel>
</StackPanel>
<Grid Grid.Column="3"
Visibility="{Binding HideTitleBar, Converter={StaticResource InverseBoolToVisConverter}}">
<controls:MaterialTitleBar x:Name="MaterialTitleBar"
Margin="20"
HorizontalAlignment="Right" />
</Grid>
<StackPanel Grid.Column="1"
Orientation="Horizontal"
Visibility="{Binding DataBlockLoader.PlaceholderVisible, Converter={StaticResource InverseBooleanToVisibilityConverter}}"
HorizontalAlignment="Center"
VerticalAlignment="Center">
<Grid>
<Rectangle Fill="{StaticResource PrimaryTextColorBrush}"
Height="2"
Visibility="{Binding PatientInfoManager.AnonymousMode, Converter={StaticResource BooleanToVisibilityHiddenConverter}}" />
<StackPanel Orientation="Horizontal"
Visibility="{Binding PatientInfoManager.AnonymousMode, Converter={StaticResource InverseBooleanToVisibilityHiddenConverter}}">
<TextBlock Style="{StaticResource MaterialDesignBody1TextBlock}"
Foreground="{StaticResource White1Brush}"
Margin="10"
Text="{Binding PatientInfoManager.PatientName}"
ToolTip="{Binding PatientInfoManager.PatientName}"
MaxWidth="150"
d:Text="张三" />
<Rectangle Width="1"
Height="20"
Fill="{StaticResource White1Brush}" />
<TextBlock Style="{StaticResource MaterialDesignBody1TextBlock}"
Foreground="{StaticResource White1Brush}"
Margin="10"
Text="{Binding PatientInfoManager.PatientId}"
ToolTip="{Binding PatientInfoManager.PatientId}"
MaxWidth="150"
d:Text="12345678912345678912345697" />
<Rectangle Width="1"
Height="20"
Fill="{StaticResource White1Brush}" />
<TextBlock Style="{StaticResource MaterialDesignBody1TextBlock}"
Foreground="{StaticResource White1Brush}"
Margin="10"
Text="{Binding PatientInfoManager.PatientSex}"
d:Text="M" />
<Rectangle Width="1"
Height="20"
Fill="{StaticResource White1Brush}" />
<TextBlock Style="{StaticResource MaterialDesignBody1TextBlock}"
Foreground="{StaticResource White1Brush}"
Margin="10"
Text="{Binding PatientInfoManager.PatientAge}"
d:Text="60" />
<Rectangle Width="1"
Height="20"
Fill="{StaticResource White1Brush}" />
<TextBlock Style="{StaticResource MaterialDesignBody1TextBlock}"
Foreground="{StaticResource White1Brush}"
Margin="10"
Text="{Binding PatientInfoManager.StudyDate, StringFormat=d}"
d:Text="20211103" />
</StackPanel>
</Grid>
<Button Style="{StaticResource MaterialTitleBarButton}"
Foreground="{StaticResource PrimaryTextColorBrush}"
attachedProperties:MaterialTitleBarButtonProperties.IconSwitch="{Binding PatientInfoManager.AnonymousMode}"
attachedProperties:MaterialTitleBarButtonProperties.TrueIconKind="HideOutline"
attachedProperties:MaterialTitleBarButtonProperties.FalseIconKind="ShowOutline"
Click="AnonymousModeButtonClick"
Margin="5" />
</StackPanel>
<StackPanel Grid.Column="2"
VerticalAlignment="Center"
Orientation="Horizontal">
<TextBlock Style="{StaticResource MaterialDesignBody1TextBlock}"
VerticalAlignment="Center"
Visibility="{Binding ShowRemainingQuota, Converter={StaticResource BooleanToVisibilityConverter}}"
Text="{StaticResource RemainingQuota}"
Foreground="{StaticResource White1Brush}" />
<Border Background="{StaticResource PrimaryColorHighlightBrush}"
Visibility="{Binding ShowRemainingQuota, Converter={StaticResource BooleanToVisibilityConverter}}"
VerticalAlignment="Center"
Margin="10, 0">
<TextBlock Style="{StaticResource MaterialDesignBody1TextBlock}"
Margin="10, 0"
Text="{Binding ServerHandler.Quota}"
d:Text="500"
Foreground="{StaticResource White1Brush}" />
</Border>
<Button Click="ShowRightDrawerButtonClick"
Visibility="{Binding ShowHistoryButton, Converter={StaticResource BooleanToVisibilityConverter}}"
Margin="10"
Style="{StaticResource LiviaPrimaryTextIconButton}"
attachedProperties:IconKindProperties.IconKind="ClockOutline"
attachedProperties:StringItemProperties.ItemName="{StaticResource JobListButtonText }" />
<Button Click="SettingsButtonClick"
Margin="10"
Style="{StaticResource LiviaPrimaryTextIconButton}"
attachedProperties:IconKindProperties.IconKind="CogOutline"
attachedProperties:StringItemProperties.ItemName="{StaticResource SettingsWindowName }" />
<Button IsEnabled="{Binding ServerHandler.Processing, Converter={StaticResource InvertBooleanConverter}}"
Visibility="{Binding ShowLogoutButton, Converter={StaticResource BooleanToVisibilityConverter}}"
Click="LogoutButtonClick"
Margin="10"
Style="{StaticResource LiviaPrimaryTextIconButton}"
attachedProperties:IconKindProperties.IconKind="ExitToApp"
attachedProperties:StringItemProperties.ItemName="{StaticResource Logout }" />
</StackPanel>
</Grid>
<materialDesign:DrawerHost x:Name="DrawerHost"
Grid.Row="1"
LeftDrawerBackground="{StaticResource PrimaryColorBrush}"
RightDrawerBackground="{StaticResource PrimaryColorBrush}"
d:IsLeftDrawerOpen="True"
d:IsRightDrawerOpen="True">
<materialDesign:DrawerHost.LeftDrawerContent>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<StackPanel Grid.Row="0"
Margin="16"
Orientation="Vertical">
<Button Margin="0, 10"
HorizontalAlignment="Right"
Click="HideLeftDrawerButtonClick"
Style="{StaticResource LiviaPrimaryIconButton}"
attachedProperties:IconKindProperties.IconKind="ArrowLeft" />
<DockPanel Margin="0, 10">
<TextBlock DockPanel.Dock="Left"
Style="{StaticResource MaterialDesignHeadline5TextBlock}"
VerticalAlignment="Center"
Text="{StaticResource SearchButtonText}"
Foreground="{StaticResource White1Brush}" />
<StackPanel Orientation="Horizontal"
HorizontalAlignment="Right"
DockPanel.Dock="Right">
<TextBlock Style="{StaticResource MaterialDesignBody1TextBlock}"
VerticalAlignment="Center"
Text="{StaticResource SearchTipsText}"
Foreground="{StaticResource Gray1Brush}" />
</StackPanel>
</DockPanel>
<Rectangle MinWidth="300"
Height="1"
Fill="{StaticResource PrimaryColorLightBrush}" />
</StackPanel>
<controls:SearchQueryInputControl Grid.Row="1"
Margin="20, 0"
DataContext="{Binding SearchQueryViewModel}" />
<controls:DataBlockTableControl Grid.Row="2"
MinWidth="1800"
DataContext="{Binding SearchResultTableViewModel}" />
</Grid>
</materialDesign:DrawerHost.LeftDrawerContent>
<materialDesign:DrawerHost.RightDrawerContent>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<StackPanel Grid.Row="0"
Margin="16"
Orientation="Vertical">
<Button Margin="0, 10"
HorizontalAlignment="Left"
Click="HideRightDrawerButtonClick"
Style="{StaticResource LiviaPrimaryIconButton}"
attachedProperties:IconKindProperties.IconKind="ArrowRight" />
<DockPanel Margin="0, 10">
<TextBlock DockPanel.Dock="Left"
Style="{StaticResource MaterialDesignHeadline5TextBlock}"
VerticalAlignment="Center"
Text="{StaticResource JobListButtonText}"
Foreground="{StaticResource White1Brush}" />
<Button DockPanel.Dock="Right"
Style="{StaticResource LiviaPrimaryIconButton}"
Click="ShowRightDrawerButtonClick"
HorizontalAlignment="Right"
VerticalAlignment="Center"
Margin="5"
attachedProperties:IconKindProperties.IconKind="Refresh" />
</DockPanel>
<Rectangle MinWidth="300"
Height="1"
Fill="{StaticResource PrimaryColorLightBrush}" />
</StackPanel>
<controls:DataBlockTableControl Grid.Row="1"
MinWidth="1800"
DataContext="{Binding JobListTableViewModel}" />
</Grid>
</materialDesign:DrawerHost.RightDrawerContent>
<Grid x:Name="ControlHost" />
</materialDesign:DrawerHost>
</Grid>
</materialDesign:TransitionerSlide>
<materialDesign:TransitionerSlide ClipToBounds="True">
<materialDesign:TransitionerSlide.BackwardWipe>
<materialDesign:CircleWipe />
</materialDesign:TransitionerSlide.BackwardWipe>
<materialDesign:TransitionerSlide.ForwardWipe>
<materialDesign:CircleWipe />
</materialDesign:TransitionerSlide.ForwardWipe>
<Grid DockPanel.Dock="Top"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="80" />
<RowDefinition Height="*" />
<RowDefinition Height="80" />
</Grid.RowDefinitions>
<Grid.Background>
<ImageBrush ImageSource="pack://application:,,,/Livia;Component/Resources/Images/login_background.png"
Stretch="UniformToFill"
RenderOptions.BitmapScalingMode="HighQuality" />
</Grid.Background>
<Border Grid.Row="0"
MouseLeftButtonDown="TitleBarMouseLeftButtonDown"
Background="Transparent">
<Grid Visibility="{Binding HideTitleBar, Converter={StaticResource InverseBoolToVisConverter}}">
<controls:MaterialTitleBar Margin="20"
HorizontalAlignment="Right" />
</Grid>
</Border>
<StackPanel Grid.Row="1"
VerticalAlignment="Center"
HorizontalAlignment="Center">
<TextBlock Text="{StaticResource Updating}"
Foreground="{StaticResource White1Brush}"
HorizontalAlignment="Center"
Margin="20"
Style="{StaticResource MaterialDesignHeadline2TextBlock}" />
<ProgressBar IsIndeterminate="True"
Width="600"
Height="20"
Style="{StaticResource MaterialDesignLinearProgressBar}" />
</StackPanel>
</Grid>
</materialDesign:TransitionerSlide>
<materialDesign:TransitionerSlide ClipToBounds="True">
<materialDesign:TransitionerSlide.BackwardWipe>
<materialDesign:CircleWipe />
</materialDesign:TransitionerSlide.BackwardWipe>
<materialDesign:TransitionerSlide.ForwardWipe>
<materialDesign:CircleWipe />
</materialDesign:TransitionerSlide.ForwardWipe>
<Grid DockPanel.Dock="Top"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="80" />
<RowDefinition Height="*" />
<RowDefinition Height="80" />
</Grid.RowDefinitions>
<Grid.Background>
<ImageBrush ImageSource="pack://application:,,,/Livia;Component/Resources/Images/login_background.png"
Stretch="UniformToFill"
RenderOptions.BitmapScalingMode="HighQuality" />
</Grid.Background>
<Border Grid.Row="0"
MouseLeftButtonDown="TitleBarMouseLeftButtonDown"
Background="Transparent">
<StackPanel Orientation="Horizontal"
HorizontalAlignment="Right">
<Button Click="SettingsButtonClick"
Margin="10"
Visibility="{Binding DeveloperMode, Source={x:Static properties:Settings.Default}, Converter={StaticResource BooleanToVisibilityConverter}}"
Style="{StaticResource LiviaPrimaryTextIconButton}"
attachedProperties:IconKindProperties.IconKind="CogOutline"
attachedProperties:StringItemProperties.ItemName="{StaticResource SettingsWindowName }" />
<Grid Visibility="{Binding HideTitleBar, Converter={StaticResource InverseBoolToVisConverter}}">
<controls:MaterialTitleBar Margin="20"
HorizontalAlignment="Right" />
</Grid>
</StackPanel>
</Border>
<StackPanel Grid.Row="1"
VerticalAlignment="Center"
HorizontalAlignment="Center">
<materialDesign:PackIcon Kind="ProgressWrench"
HorizontalAlignment="Center"
Height="250"
Width="250"
Foreground="{StaticResource White1Brush}" />
<TextBlock d:Text="维护中"
Text="{Binding MaintenanceMessage}"
Foreground="{StaticResource White1Brush}"
HorizontalAlignment="Center"
Margin="20"
Style="{StaticResource MaterialDesignHeadline2TextBlock}" />
</StackPanel>
</Grid>
</materialDesign:TransitionerSlide>
</materialDesign:Transitioner>
<Border Grid.Row="0"
HorizontalAlignment="Center">
<Border.Effect>
<DropShadowEffect ShadowDepth="0"
BlurRadius="12"
Opacity="0.15"
Color="#000000 " />
</Border.Effect>
<materialDesign:Snackbar x:Name="MainWindowSnackbar"
Margin="0,0, 0, 80"
Background="{StaticResource White1Brush}"
Foreground="{StaticResource Black1Brush}"
d:IsActive="True"
d:Message="分析完成"
MessageQueue="{materialDesign:MessageQueue}" />
</Border>
</Grid>
</materialDesign:DialogHost>
</Window>