Files
PowerToys/src/modules/FileLocksmith/FileLocksmithUI/Views/MainPage.xaml
Jaime Bernardo 7b7742719c [FileLocksmith]Fix crash while opening process handlers (#21602)
* [FileLocksmith]Fix crash while opening processes

* Remove binding on IsExpanded. It's not working
2022-11-02 11:38:04 +00:00

207 lines
12 KiB
XML

<Page
x:Class="PowerToys.FileLocksmithUI.Views.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:converters="using:PowerToys.FileLocksmithUI.Converters"
xmlns:core="using:Microsoft.Xaml.Interactions.Core"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:interactivity="using:Microsoft.Xaml.Interactivity"
xmlns:interop="using:FileLocksmith.Interop"
xmlns:labs="using:CommunityToolkit.Labs.WinUI"
xmlns:local="using:PowerToys.FileLocksmithUI.Views"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:toolkitConverters="using:CommunityToolkit.WinUI.UI.Converters"
mc:Ignorable="d">
<Page.Resources>
<toolkitConverters:BoolToVisibilityConverter
x:Key="boolToVisibilityConverter"
FalseValue="Visible"
TrueValue="Collapsed" />
<toolkitConverters:DoubleToVisibilityConverter
x:Key="doubleToVisibilityConverter"
FalseValue="Visible"
GreaterThan="0"
TrueValue="Collapsed" />
<converters:FileCountConverter x:Key="fileCountConverter" />
<converters:PidToIconConverter x:Key="pidToIconConverter" />
<converters:PidToUserConverter x:Key="pidToUserConverter" />
<converters:FileListToDescriptionConverter x:Key="fileListToDescriptionConverter" />
</Page.Resources>
<interactivity:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="Loaded">
<core:InvokeCommandAction Command="{x:Bind ViewModel.LoadProcessesCommand}" />
</core:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="48" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid Padding="18,0,18,4" VerticalAlignment="Bottom">
<!--<TextBlock Margin="0,2,0,0" Text="Current proccesses:" Style="{ThemeResource BodyStrongTextBlockStyle}"/>-->
<Button Content="{x:Bind ViewModel.Paths, Converter={StaticResource fileListToDescriptionConverter}}" Click="ShowSelectedPathsButton_Click">
<Button.Template>
<ControlTemplate TargetType="Button">
<TextBlock Margin="0,8,0,0"
HorizontalAlignment="Left"
Style="{ThemeResource BodyStrongTextBlockStyle}"
Text="{TemplateBinding Content}" >
</TextBlock>
</ControlTemplate>
</Button.Template>
<ToolTipService.ToolTip>
<TextBlock x:Uid="PathsTooltipDescription" TextWrapping="WrapWholeWords"/>
</ToolTipService.ToolTip>
</Button>
<StackPanel
HorizontalAlignment="Right"
VerticalAlignment="Bottom"
Orientation="Horizontal"
Spacing="6">
<Button
Padding="0"
HorizontalAlignment="Right"
Command="{Binding LoadProcessesCommand}"
Style="{StaticResource SubtleButtonStyle}">
<FontIcon
FontFamily="{ThemeResource SymbolThemeFontFamily}"
FontSize="16"
Glyph="&#xE149;" />
<ToolTipService.ToolTip>
<TextBlock x:Uid="Reload" />
</ToolTipService.ToolTip>
</Button>
<Button
x:Name="RestartAsAdminBtn"
Padding="0"
Command="{Binding RestartElevatedCommand}"
Style="{StaticResource SubtleButtonStyle}"
Visibility="{x:Bind ViewModel.IsElevated, Converter={StaticResource boolToVisibilityConverter}}">
<FontIcon
FontFamily="{ThemeResource SymbolThemeFontFamily}"
FontSize="16"
Glyph="&#xE1A7;" />
<ToolTipService.ToolTip>
<TextBlock x:Uid="RestartAsAdmin" />
</ToolTipService.ToolTip>
</Button>
</StackPanel>
</Grid>
<Grid Grid.Row="1">
<Grid Visibility="{x:Bind ViewModel.IsLoading, Converter={StaticResource boolToVisibilityConverter}, Mode=OneWay}">
<ListView
x:Name="ProcessesListView"
Grid.Row="1"
ItemsSource="{x:Bind ViewModel.Processes}"
IncrementalLoadingThreshold="10"
SelectionMode="None">
<ListView.ItemTemplate>
<DataTemplate x:DataType="interop:ProcessResult">
<labs:SettingsExpander Margin="0,3,0,0">
<labs:SettingsExpander.Header>
<!-- We can't use the HeaderIcon because it only support a BitmapIcon, which only supports UriSource - not a direct BitmapImage -->
<StackPanel Orientation="Horizontal">
<Image
Width="16"
Height="16"
Margin="2,0,24,0"
Source="{x:Bind pid, Converter={StaticResource pidToIconConverter}}" />
<TextBlock IsTextSelectionEnabled="True" Text="{x:Bind name}" />
</StackPanel>
</labs:SettingsExpander.Header>
<labs:SettingsExpander.Content>
<Button Command="{Binding Path=DataContext.EndTaskCommand, ElementName=ProcessesListView}" CommandParameter="{Binding}">
<StackPanel Orientation="Horizontal" Spacing="6">
<FontIcon
FontFamily="{ThemeResource SymbolThemeFontFamily}"
FontSize="14"
Glyph="&#xf140;" />
<TextBlock x:Uid="EndTask" />
</StackPanel>
</Button>
</labs:SettingsExpander.Content>
<labs:SettingsExpander.Items>
<labs:SettingsCard x:Uid="ProcessID">
<TextBlock
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
IsTextSelectionEnabled="True"
Text="{x:Bind pid}" />
</labs:SettingsCard>
<labs:SettingsCard x:Uid="User">
<TextBlock
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
IsTextSelectionEnabled="True"
Text="{x:Bind pid, Converter={StaticResource pidToUserConverter}}" />
</labs:SettingsCard>
<labs:SettingsCard ContentAlignment="Vertical">
<labs:SettingsCard.Header>
<TextBlock>
<Run x:Uid="Files" />
<Run Text="(" /><Run Text="{x:Bind files, Converter={StaticResource fileCountConverter}}" /><Run Text=")" />
</TextBlock>
</labs:SettingsCard.Header>
<ListView
Margin="-16,0,0,0"
ItemsSource="{x:Bind files}"
SelectionMode="None">
<ListView.ItemTemplate>
<DataTemplate x:DataType="x:String">
<TextBlock
FontSize="12"
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
IsTextSelectionEnabled="True"
Style="{StaticResource CaptionTextBlockStyle}"
Text="{Binding}"
TextTrimming="CharacterEllipsis"
TextWrapping="NoWrap"
ToolTipService.ToolTip="{Binding}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</labs:SettingsCard>
</labs:SettingsExpander.Items>
</labs:SettingsExpander>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Orientation="Vertical"
Spacing="8"
Visibility="{x:Bind ViewModel.Processes.Count, Mode=OneWay, Converter={StaticResource doubleToVisibilityConverter}}">
<Button HorizontalAlignment="Center" Command="{Binding LoadProcessesCommand}" >
<Button.Template>
<ControlTemplate TargetType="Button">
<FontIcon FontSize="32" Glyph="&#xE9F3;" />
</ControlTemplate>
</Button.Template>
<ToolTipService.ToolTip>
<TextBlock x:Uid="Reload" />
</ToolTipService.ToolTip>
</Button>
<TextBlock x:Uid="EmptyListDescription" Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
</StackPanel>
</Grid>
<ProgressRing
Width="48"
Height="48"
IsActive="{x:Bind ViewModel.IsLoading, Mode=OneWay}" />
</Grid>
<ContentDialog
x:Name="SelectedFilesListDialog"
x:Uid="SelectedFilesListDialog"
>
<ScrollViewer HorizontalScrollBarVisibility="Auto" HorizontalScrollMode="Auto" VerticalScrollBarVisibility="Auto" VerticalScrollMode="Auto">
<TextBlock Text="{x:Bind ViewModel.PathsToString, Mode=OneWay}"/>
</ScrollViewer>
</ContentDialog>
</Grid>
</Page>