/
githubmirror
/
Files
Обзор
Документация
Войти
/
githubmirror
/
Files
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Files.App/Views/Properties/SecurityPage.xaml
454 строки
16 KB
Marco Franzen
Fix: Disabled text wrapping for the permissions list entries (#16851)
23 фев 2025, 22:47
Не верифицирован
23 фев 2025, 22:47
2397f79
Код
Авторство
О чём код?
<!-- Copyright (c) Files Community. Licensed under the MIT License. --> <vm:BasePropertiesPage x:Class="Files.App.Views.Properties.SecurityPage" 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:dataitems="using:Files.App.Data.Items" xmlns:helpers="using:Files.App.Helpers" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:vm="using:Files.App.ViewModels.Properties" xmlns:wctconverters="using:CommunityToolkit.WinUI.Converters" DataContext="{x:Bind SecurityViewModel, Mode=OneWay}" Tag="Security" mc:Ignorable="d"> <Page.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="ms-appx:///Styles/PropertiesStyles.xaml" /> </ResourceDictionary.MergedDictionaries> <wctconverters:BoolNegationConverter x:Key="BoolNegationConverter" /> <wctconverters:EmptyCollectionToObjectConverter x:Key="EmptyCollectionToBoolConverter" EmptyValue="True" NotEmptyValue="False" /> <wctconverters:EmptyCollectionToObjectConverter x:Key="EmptyCollectionToBoolNegationConverter" EmptyValue="False" NotEmptyValue="True" /> </ResourceDictionary> </Page.Resources> <ScrollViewer x:Name="RootScrollViewer"> <Grid Padding="12" RowSpacing="8"> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <!-- No Read Access Control InfoBar --> <InfoBar x:Name="UnableToDisplayInformationInfoBar" Grid.Row="0" x:Load="{x:Bind SecurityViewModel.DisplayElements, Converter={StaticResource BoolNegationConverter}, Mode=OneWay}" Background="{ThemeResource LayerFillColorDefaultBrush}" IsClosable="False" IsOpen="True" Message="{x:Bind SecurityViewModel.ErrorMessage, Mode=OneWay}" Severity="Informational"> <Button x:Name="OpenSecurityAdvancedPageFromInfoBarButton" Margin="0,0,12,12" HorizontalAlignment="Right" Click="OpenSecurityAdvancedPageButton_Click" Content="{helpers:ResourceString Name=AdvancedPermissions}" /> </InfoBar> <!-- Access Control Entries --> <Grid x:Name="PrincipalListGrid" Grid.Row="0" x:Load="{x:Bind SecurityViewModel.DisplayElements, Mode=OneWay}" Background="{ThemeResource LayerFillColorDefaultBrush}" BorderBrush="{ThemeResource CardStrokeColorDefaultBrush}" BorderThickness="1" CornerRadius="4"> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <!-- Header --> <Grid Grid.Row="0" Margin="12,8,12,8"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <TextBlock Grid.Column="0" Margin="4" VerticalAlignment="Center" Text="{helpers:ResourceString Name=SecurityUsersGroupLabel/Text}" /> <StackPanel Grid.Column="1" Orientation="Horizontal" Spacing="8"> <Button Padding="8" Background="Transparent" BorderBrush="Transparent" Command="{x:Bind SecurityViewModel.AddAccessControlEntryCommand, Mode=OneWay}" IsEnabled="{x:Bind SecurityViewModel.IsAddAccessControlEntryButtonEnabled, Mode=OneWay}"> <FontIcon FontSize="16" Glyph="" /> </Button> <Button Padding="8" Background="Transparent" BorderBrush="Transparent" Command="{x:Bind SecurityViewModel.RemoveAccessControlEntryCommand, Mode=OneWay}" IsEnabled="{x:Bind SecurityViewModel.IsDeleteAccessControlEntryButtonEnabled, Mode=OneWay}"> <FontIcon FontSize="16" Glyph="" /> </Button> </StackPanel> </Grid> <!-- (Divider) --> <Border Grid.Row="1" Height="1" Background="{ThemeResource DividerStrokeColorDefaultBrush}" /> <!-- Access Control Entries List --> <ScrollViewer x:Name="AccessControlListScrollViewer" Grid.Row="2" MaxHeight="160" x:Load="{x:Bind SecurityViewModel.AccessControlList.AccessControlEntries, Converter={StaticResource EmptyCollectionToBoolNegationConverter}, Mode=OneWay}"> <ListView x:Name="AccessControlListListView" Margin="0,4" ItemsSource="{x:Bind SecurityViewModel.AccessControlList.AccessControlEntries, Mode=OneWay}" ScrollViewer.VerticalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollMode="Disabled" SelectedIndex="0" SelectedItem="{x:Bind SecurityViewModel.SelectedAccessControlEntry, Mode=TwoWay}" SelectionMode="Single"> <ListView.ItemTemplate> <DataTemplate x:DataType="dataitems:AccessControlEntry"> <Grid ColumnSpacing="4"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <FontIcon Grid.Column="0" Margin="0,0,8,0" HorizontalAlignment="Left" FontFamily="{StaticResource SymbolThemeFontFamily}" FontSize="16" Glyph="{x:Bind Principal.Glyph}" /> <TextBlock Grid.Column="1" Style="{StaticResource App.Theme.BodyTextBlockStyle}" TextWrapping="NoWrap" ToolTipService.ToolTip="{x:Bind Principal.FullNameHumanized}"> <Run Text="{x:Bind Principal.DisplayName}" /> <Run Foreground="{ThemeResource TextFillColorSecondaryBrush}" Text="{x:Bind Principal.FullNameHumanizedWithBrackes}" /> </TextBlock> </Grid> </DataTemplate> </ListView.ItemTemplate> </ListView> </ScrollViewer> <!-- No Access Control Entries Message --> <TextBlock x:Name="NoAccessControlEntriesTextBlock" Grid.Row="2" Margin="16,16,16,16" x:Load="{x:Bind SecurityViewModel.AccessControlList.AccessControlEntries, Converter={StaticResource EmptyCollectionToBoolConverter}, Mode=OneWay}" Text="{helpers:ResourceString Name=SecurityNoAccessControlEntriesText}" TextWrapping="Wrap" /> </Grid> <!-- Permissions of Selected ACE --> <Grid x:Name="PermissionsForSelectedAccessControlEntryGrid" Grid.Row="1" Padding="12" x:Load="{x:Bind SecurityViewModel.DisplayElements, Mode=OneWay}" Background="{ThemeResource LayerFillColorDefaultBrush}" BorderBrush="{ThemeResource CardStrokeColorDefaultBrush}" BorderThickness="1" CornerRadius="4" RowSpacing="8"> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <!-- Header --> <Grid Grid.Row="0" ColumnSpacing="8"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <TextBlock Grid.Column="0" Margin="4" VerticalAlignment="Center" Text="{x:Bind SecurityViewModel.SelectedItemHeaderText, Mode=OneWay}" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap" ToolTipService.ToolTip="{x:Bind SecurityViewModel.SelectedItemHeaderText, Mode=OneWay}" /> <Button x:Name="OpenSecurityAdvancedPageButton" Grid.Column="1" Padding="8,6,4,6" VerticalAlignment="Center" AutomationProperties.Name="{helpers:ResourceString Name=AdvancedPermissions}" Click="OpenSecurityAdvancedPageButton_Click" ToolTipService.ToolTip="{helpers:ResourceString Name=AdvancedPermissions}"> <StackPanel Orientation="Horizontal" Spacing="4"> <TextBlock Text="{helpers:ResourceString Name=AdvancedPermissions}" /> <FontIcon FontSize="14" Glyph="" /> </StackPanel> </Button> </Grid> <!-- (Divider) --> <Border Grid.Row="1" Height="1" Margin="-12,0" Background="{ThemeResource DividerStrokeColorDefaultBrush}" /> <!-- Permission Allow/Deny CheckBoxes --> <Grid x:Name="CheckBoxGrid" Grid.Row="2" Padding="8" HorizontalAlignment="Stretch" ColumnSpacing="8"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="12" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <!-- Allow --> <TextBlock Grid.Row="0" Grid.Column="1" Margin="0,0,0,4" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{helpers:ResourceString Name=Allow}" /> <!-- Deny --> <TextBlock Grid.Row="0" Grid.Column="3" Margin="0,0,0,4" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{helpers:ResourceString Name=Deny}" /> <!-- Full Control --> <TextBlock Grid.Row="1" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center" Text="{helpers:ResourceString Name=SecurityFullControlLabel/Text}" /> <CheckBox Grid.Row="1" Grid.Column="1" MinWidth="0" Padding="0" HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="{x:Bind SecurityViewModel.SelectedAccessControlEntry.AllowedFullControlAccess, Mode=TwoWay}" IsEnabled="{x:Bind SecurityViewModel.SelectedAccessControlEntry.AllowedInheritedFullControlAccess, Converter={StaticResource BoolNegationConverter}, Mode=OneWay}" /> <CheckBox Grid.Row="1" Grid.Column="3" MinWidth="0" Padding="0" HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="{x:Bind SecurityViewModel.SelectedAccessControlEntry.DeniedFullControlAccess, Mode=TwoWay}" IsEnabled="{x:Bind SecurityViewModel.SelectedAccessControlEntry.DeniedInheritedFullControlAccess, Converter={StaticResource BoolNegationConverter}, Mode=OneWay}" /> <!-- Modify --> <TextBlock Grid.Row="2" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center" Text="{helpers:ResourceString Name=Modify}" /> <CheckBox Grid.Row="2" Grid.Column="1" MinWidth="0" Padding="0" HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="{x:Bind SecurityViewModel.SelectedAccessControlEntry.AllowedModifyAccess, Mode=TwoWay}" IsEnabled="{x:Bind SecurityViewModel.SelectedAccessControlEntry.AllowedInheritedModifyAccess, Converter={StaticResource BoolNegationConverter}, Mode=OneWay}" /> <CheckBox Grid.Row="2" Grid.Column="3" MinWidth="0" Padding="0" HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="{x:Bind SecurityViewModel.SelectedAccessControlEntry.DeniedModifyAccess, Mode=TwoWay}" IsEnabled="{x:Bind SecurityViewModel.SelectedAccessControlEntry.DeniedInheritedModifyAccess, Converter={StaticResource BoolNegationConverter}, Mode=OneWay}" /> <!-- Read & Execute --> <TextBlock Grid.Row="3" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center" Text="{helpers:ResourceString Name=SecurityReadAndExecuteLabel/Text}" /> <CheckBox Grid.Row="3" Grid.Column="1" MinWidth="0" Padding="0" HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="{x:Bind SecurityViewModel.SelectedAccessControlEntry.AllowedReadAndExecuteAccess, Mode=TwoWay}" IsEnabled="{x:Bind SecurityViewModel.SelectedAccessControlEntry.AllowedInheritedReadAndExecuteAccess, Converter={StaticResource BoolNegationConverter}, Mode=OneWay}" /> <CheckBox Grid.Row="3" Grid.Column="3" MinWidth="0" Padding="0" HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="{x:Bind SecurityViewModel.SelectedAccessControlEntry.DeniedReadAndExecuteAccess, Mode=TwoWay}" IsEnabled="{x:Bind SecurityViewModel.SelectedAccessControlEntry.DeniedInheritedReadAndExecuteAccess, Converter={StaticResource BoolNegationConverter}, Mode=OneWay}" /> <!-- List Directory Contents --> <TextBlock Grid.Row="4" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center" Text="{helpers:ResourceString Name=SecurityListDirectoryLabel/Text}" Visibility="{x:Bind SecurityViewModel.AccessControlList.IsFolder, Mode=OneWay}" /> <CheckBox Grid.Row="4" Grid.Column="1" MinWidth="0" Padding="0" HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="{x:Bind SecurityViewModel.SelectedAccessControlEntry.AllowedListDirectoryAccess, Mode=TwoWay}" IsEnabled="{x:Bind SecurityViewModel.SelectedAccessControlEntry.AllowedInheritedListDirectoryAccess, Converter={StaticResource BoolNegationConverter}, Mode=OneWay}" Visibility="{x:Bind SecurityViewModel.AccessControlList.IsFolder, Mode=OneWay}" /> <CheckBox Grid.Row="4" Grid.Column="3" MinWidth="0" Padding="0" HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="{x:Bind SecurityViewModel.SelectedAccessControlEntry.DeniedListDirectoryAccess, Mode=TwoWay}" IsEnabled="{x:Bind SecurityViewModel.SelectedAccessControlEntry.DeniedInheritedListDirectoryAccess, Converter={StaticResource BoolNegationConverter}, Mode=OneWay}" Visibility="{x:Bind SecurityViewModel.AccessControlList.IsFolder, Mode=OneWay}" /> <!-- Read --> <TextBlock Grid.Row="5" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center" Text="{helpers:ResourceString Name=SecurityReadLabel/Text}" /> <CheckBox Grid.Row="5" Grid.Column="1" MinWidth="0" Padding="0" HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="{x:Bind SecurityViewModel.SelectedAccessControlEntry.AllowedReadAccess, Mode=TwoWay}" IsEnabled="{x:Bind SecurityViewModel.SelectedAccessControlEntry.AllowedInheritedReadAccess, Converter={StaticResource BoolNegationConverter}, Mode=OneWay}" /> <CheckBox Grid.Row="5" Grid.Column="3" MinWidth="0" Padding="0" HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="{x:Bind SecurityViewModel.SelectedAccessControlEntry.DeniedReadAccess, Mode=TwoWay}" IsEnabled="{x:Bind SecurityViewModel.SelectedAccessControlEntry.DeniedInheritedReadAccess, Converter={StaticResource BoolNegationConverter}, Mode=OneWay}" /> <!-- Write --> <TextBlock Grid.Row="6" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center" Text="{helpers:ResourceString Name=Write}" /> <CheckBox Grid.Row="6" Grid.Column="1" MinWidth="0" Padding="0" HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="{x:Bind SecurityViewModel.SelectedAccessControlEntry.AllowedWriteAccess, Mode=TwoWay}" IsEnabled="{x:Bind SecurityViewModel.SelectedAccessControlEntry.AllowedInheritedWriteAccess, Converter={StaticResource BoolNegationConverter}, Mode=OneWay}" /> <CheckBox Grid.Row="6" Grid.Column="3" MinWidth="0" Padding="0" HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="{x:Bind SecurityViewModel.SelectedAccessControlEntry.DeniedWriteAccess, Mode=TwoWay}" IsEnabled="{x:Bind SecurityViewModel.SelectedAccessControlEntry.DeniedInheritedWriteAccess, Converter={StaticResource BoolNegationConverter}, Mode=OneWay}" /> </Grid> </Grid> </Grid> </ScrollViewer> </vm:BasePropertiesPage>