ManagedFileChooser.axaml 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. <ResourceDictionary xmlns="https://github.com/avaloniaui"
  2. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  3. xmlns:content="clr-namespace:SukiUI.Content"
  4. xmlns:controls="clr-namespace:SukiUI.Controls"
  5. xmlns:converters="clr-namespace:Avalonia.Controls.Converters;assembly=Avalonia.Controls"
  6. xmlns:dialogs="clr-namespace:Avalonia.Dialogs;assembly=Avalonia.Dialogs"
  7. xmlns:internal="clr-namespace:Avalonia.Dialogs.Internal;assembly=Avalonia.Dialogs"
  8. xmlns:theme="clr-namespace:SukiUI.Theme">
  9. <Design.PreviewWith>
  10. <dialogs:ManagedFileChooser Width="600" Height="600" />
  11. </Design.PreviewWith>
  12. <DrawingGroup x:Key="LevelUp">
  13. <GeometryDrawing Brush="#00FFFFFF" Geometry="F1M16,16L0,16 0,0 16,0z" />
  14. <GeometryDrawing Brush="#FFF6F6F6" Geometry="F1M14.5,0L6.39,0 5.39,2 2.504,2C1.677,2,1,2.673,1,3.5L1,10.582 1,10.586 1,15.414 3,13.414 3,16 7,16 7,13.414 9,15.414 9,13 14.5,13C15.327,13,16,12.327,16,11.5L16,1.5C16,0.673,15.327,0,14.5,0" />
  15. <GeometryDrawing Brush="#FFDCB679" Geometry="F1M14,3L7.508,3 8.008,2 8.012,2 14,2z M14.5,1L7.008,1 6.008,3 2.504,3C2.227,3,2,3.224,2,3.5L2,9.582 4.998,6.586 9,10.586 9,12 14.5,12C14.775,12,15,11.776,15,11.5L15,1.5C15,1.224,14.775,1,14.5,1" />
  16. <GeometryDrawing Brush="#FF00529C" Geometry="F1M8,11L5,8 2,11 2,13 4,11 4,15 6,15 6,11 8,13z" />
  17. <GeometryDrawing Brush="#FFF0EFF1" Geometry="F1M8.0001,1.9996L7.5001,3.0006 14.0001,3.0006 14.0001,1.9996z" />
  18. </DrawingGroup>
  19. <DrawingGroup x:Key="Refresh">
  20. <GeometryDrawing Brush="#FFF6F6F6" Geometry="F1M13.5049,7.3896L13.2339,6.2646 9.9299,7.5886 10.0729,8.3896C10.0909,8.4906 10.1079,8.5926 10.1079,8.6976 10.1079,9.8596 9.1619,10.8046 7.9999,10.8046 6.8369,10.8046 5.8909,9.8596 5.8909,8.6976 5.8909,7.8966 6.3399,7.1996 6.9999,6.8426L6.9999,9.4986 12.6789,4.8156 8.0569,0.9996 6.9999,0.9996 6.9999,3.1266C4.3539,3.6006 2.3389,5.9176 2.3389,8.6976 2.3389,11.8186 4.8789,14.3586 7.9999,14.3586 11.1209,14.3586 13.6609,11.8186 13.6609,8.6976 13.6609,8.2626 13.6089,7.8226 13.5049,7.3896" />
  21. <GeometryDrawing Brush="#FF414141" Geometry="F1M12.5322,7.623L11.0572,8.214C11.0862,8.372 11.1072,8.533 11.1072,8.697 11.1072,10.415 9.7172,11.805 8.0002,11.805 6.2852,11.805 4.8912,10.415 4.8912,8.697 4.8912,6.983 6.2852,5.59 8.0002,5.59L8.0002,7.378 11.1072,4.815 8.0002,2.25 8.0002,4.039C5.4262,4.039 3.3392,6.123 3.3392,8.697 3.3392,11.27 5.4262,13.358 8.0002,13.358 10.5762,13.358 12.6612,11.27 12.6612,8.697 12.6612,8.327 12.6152,7.969 12.5322,7.623" />
  22. </DrawingGroup>
  23. <internal:ResourceSelectorConverter x:Key="Icons">
  24. <DrawingGroup x:Key="Icon_Folder">
  25. <GeometryDrawing Brush="#00FFFFFF" Geometry="F1M0,0L16,0 16,16 0,16z" />
  26. <GeometryDrawing Brush="#FFF6F6F6" Geometry="F1M1.5,1L9.61,1 10.61,3 13.496,3C14.323,3,14.996,3.673,14.996,4.5L14.996,12.5C14.996,13.327,14.323,14,13.496,14L1.5,14C0.673,14,0,13.327,0,12.5L0,2.5C0,1.673,0.673,1,1.5,1" />
  27. <GeometryDrawing Brush="#FFDCB67A" Geometry="F1M2,3L8.374,3 8.874,4 2,4z M13.496,4L10,4 9.992,4 8.992,2 1.5,2C1.225,2,1,2.224,1,2.5L1,12.5C1,12.776,1.225,13,1.5,13L13.496,13C13.773,13,13.996,12.776,13.996,12.5L13.996,4.5C13.996,4.224,13.773,4,13.496,4" />
  28. <GeometryDrawing Brush="#FFEFEFF0" Geometry="F1M2,3L8.374,3 8.874,4 2,4z" />
  29. </DrawingGroup>
  30. <DrawingGroup x:Key="Icon_File">
  31. <GeometryDrawing Brush="#00FFFFFF" Geometry="F1M16,16L0,16 0,0 16,0z" />
  32. <GeometryDrawing Brush="#FFF6F6F6" Geometry="F1M4,15C3.03,15,2,14.299,2,13L2,3C2,1.701,3.03,1,4,1L10.061,1 14,4.556 14,13C14,13.97,13.299,15,12,15z" />
  33. <GeometryDrawing Brush="#FF9B4E96" Geometry="F1M12,13L4,13 4,3 9,3 9,6 12,6z M9.641,2L3.964,2C3.964,2,3,2,3,3L3,13C3,14,3.964,14,3.964,14L11.965,14C12.965,14,13,13,13,13L13,5z" />
  34. <GeometryDrawing Brush="#FFF0EFF1" Geometry="F1M4,3L9,3 9,6 12,6 12,13 4,13z" />
  35. </DrawingGroup>
  36. <DrawingGroup x:Key="Icon_Volume">
  37. <GeometryDrawing Brush="#00FFFFFF" Geometry="F1M16,16L0,16 0,0 16,0z" />
  38. <GeometryDrawing Brush="#FFF6F6F6" Geometry="F1M0,12L0,6.5C0,5.122,1.122,4,2.5,4L13.5,4C14.879,4,16,5.122,16,6.5L16,12z" />
  39. <GeometryDrawing Brush="#FFEFEFF0" Geometry="F1M13,8L12,8 12,7 13,7z M11,8L10,8 10,7 11,7z M13.5,6L2.5,6C2.224,6,2,6.224,2,6.5L2,10 14,10 14,6.5C14,6.224,13.775,6,13.5,6" />
  40. <GeometryDrawing Brush="#FF424242" Geometry="F1M13,7L12,7 12,8 13,8z M11,7L10,7 10,8 11,8z M2,10L14,10 14,6.5C14,6.224,13.775,6,13.5,6L2.5,6C2.224,6,2,6.224,2,6.5z M15,11L1,11 1,6.5C1,5.673,1.673,5,2.5,5L13.5,5C14.327,5,15,5.673,15,6.5z" />
  41. </DrawingGroup>
  42. </internal:ResourceSelectorConverter>
  43. <ControlTheme x:Key="{x:Type dialogs:ManagedFileChooser}" TargetType="dialogs:ManagedFileChooser">
  44. <Setter Property="Background" Value="{DynamicResource ThemeBackgroundBrush}" />
  45. <Setter Property="Template">
  46. <ControlTemplate x:DataType="internal:ManagedFileChooserViewModel">
  47. <VisualLayerManager Name="PART_VisualLayerManager" IsHitTestVisible="True">
  48. <Border Padding="{TemplateBinding Padding}"
  49. x:DataType="internal:ManagedFileChooserViewModel"
  50. Background="{TemplateBinding Background}"
  51. BorderBrush="{TemplateBinding BorderBrush}"
  52. BorderThickness="{TemplateBinding BorderThickness}"
  53. CornerRadius="{TemplateBinding CornerRadius}">
  54. <Grid>
  55. <Grid.Resources>
  56. <theme:WindowManagedConverter x:Key="WindowManaged" />
  57. </Grid.Resources>
  58. <TextBlock Text="{Binding RelativeSource={RelativeSource AncestorType=Window}, Converter={StaticResource WindowManaged}}" />
  59. <controls:SukiBackground AnimationEnabled="False" Style="Flat" />
  60. <Button Name="PART_CloseButton"
  61. Margin="13,10"
  62. HorizontalAlignment="Right"
  63. VerticalAlignment="Top"
  64. Classes="Basic Rounded WindowControlsButton Close"
  65. Command="{Binding Cancel}">
  66. <PathIcon Width="13"
  67. Height="13"
  68. Data="{x:Static content:Icons.WindowClose}" />
  69. </Button>
  70. <StackPanel Margin="15,12,0,0" Orientation="Horizontal">
  71. <Image Width="24"
  72. Height="24"
  73. Margin="2"
  74. VerticalAlignment="Top"
  75. Source="/Content/Images/icons8-file-explorer-new-48.png" />
  76. <TextBlock Margin="12,0,0,0"
  77. FontSize="25"
  78. FontWeight="{DynamicResource DefaultDemiBold}"
  79. Text="{Binding Title}">
  80. <TextBlock.Foreground>
  81. <LinearGradientBrush StartPoint="0%,0%" EndPoint="100%,100%">
  82. <GradientStop Offset="0" Color="{DynamicResource SukiText}" />
  83. <GradientStop Offset="1" Color="{DynamicResource SukiLowText}" />
  84. </LinearGradientBrush>
  85. </TextBlock.Foreground>
  86. </TextBlock>
  87. </StackPanel>
  88. <DockPanel Margin="12,40,12,12">
  89. <DockPanel Margin="0,15,0,0" DockPanel.Dock="Bottom">
  90. <StackPanel Margin="30,0,0,0"
  91. HorizontalAlignment="Right"
  92. DockPanel.Dock="Right"
  93. Orientation="Horizontal"
  94. Spacing="10">
  95. <StackPanel.Styles>
  96. <Style Selector="Button">
  97. <Setter Property="Margin" Value="4" />
  98. </Style>
  99. </StackPanel.Styles>
  100. <Button MinWidth="120"
  101. Command="{Binding Cancel}"
  102. Content="Cancel" />
  103. <Button MinWidth="120"
  104. Classes="Flat"
  105. Command="{Binding Ok}"
  106. Content="Choose" />
  107. </StackPanel>
  108. <ComboBox MaxWidth="200"
  109. Margin="0,0,0,0"
  110. DockPanel.Dock="Left"
  111. IsVisible="{Binding ShowFilters}"
  112. ItemsSource="{Binding Filters}"
  113. SelectedItem="{Binding SelectedFilter}" />
  114. <!-- <CheckBox IsChecked="{Binding ShowHiddenFiles}">
  115. <TextBlock Text="{DynamicResource StringManagedFileChooserShowHiddenFilesText}" />
  116. </CheckBox>-->
  117. <TextBox IsVisible="{Binding !SelectingFolder}"
  118. Text="{Binding FileName}"
  119. Watermark="{DynamicResource StringManagedFileChooserFileNameWatermark}" />
  120. </DockPanel>
  121. <ListBox x:Name="PART_QuickLinks"
  122. MaxWidth="200"
  123. Margin="0,30,5,5"
  124. BorderBrush="Transparent"
  125. Classes="Void"
  126. DockPanel.Dock="Left"
  127. Focusable="False"
  128. ItemsSource="{Binding QuickLinks}"
  129. SelectedIndex="{Binding QuickLinksSelectedIndex}">
  130. <ListBox.ItemTemplate>
  131. <DataTemplate>
  132. <StackPanel Margin="2"
  133. Background="Transparent"
  134. Orientation="Horizontal"
  135. Spacing="6">
  136. <Image Width="18" Height="18">
  137. <DrawingImage Drawing="{Binding IconKey, Converter={StaticResource Icons}}" />
  138. </Image>
  139. <TextBlock Margin="7,0,0,0"
  140. FontSize="17"
  141. FontWeight="{DynamicResource DefaultDemiBold}"
  142. Text="{Binding DisplayName}" />
  143. </StackPanel>
  144. </DataTemplate>
  145. </ListBox.ItemTemplate>
  146. </ListBox>
  147. <controls:GlassCard Margin="0,10,-50,0">
  148. <DockPanel Margin="0,0,50,0" Grid.IsSharedSizeScope="True">
  149. <DockPanel.Resources>
  150. <theme:TextToPathConverter x:Key="TextToPathConverter" />
  151. </DockPanel.Resources>
  152. <Button Margin="0,2"
  153. Padding="8,1"
  154. HorizontalContentAlignment="Left"
  155. Classes="NoPressedAnimation"
  156. Command="{Binding GoUp}"
  157. DockPanel.Dock="Top">
  158. <ContentControl Content="{Binding Location, Converter={StaticResource TextToPathConverter}}" />
  159. </Button>
  160. <Grid Margin="15,15,0,0"
  161. HorizontalAlignment="Stretch"
  162. DockPanel.Dock="Top">
  163. <Grid.ColumnDefinitions>
  164. <ColumnDefinition Width="20" SharedSizeGroup="Icon" />
  165. <ColumnDefinition Width="400" SharedSizeGroup="Name" />
  166. <ColumnDefinition Width="16" SharedSizeGroup="Splitter" />
  167. <ColumnDefinition Width="200" SharedSizeGroup="Modified" />
  168. <ColumnDefinition Width="16" SharedSizeGroup="Splitter" />
  169. <ColumnDefinition Width="150" SharedSizeGroup="Type" />
  170. <ColumnDefinition Width="16" SharedSizeGroup="Splitter" />
  171. <ColumnDefinition Width="200" SharedSizeGroup="Size" />
  172. <ColumnDefinition Width="16" SharedSizeGroup="Splitter" />
  173. </Grid.ColumnDefinitions>
  174. <TextBlock Grid.Column="1"
  175. Foreground="{DynamicResource SukiLowText}"
  176. Text="Name" />
  177. <GridSplitter Grid.Column="2"
  178. Background="Transparent"
  179. ResizeDirection="Columns" />
  180. <Rectangle Grid.Column="2"
  181. Width="1"
  182. HorizontalAlignment="Left"
  183. VerticalAlignment="Stretch"
  184. Fill="{DynamicResource SukiControlBorderBrush}" />
  185. <TextBlock Grid.Column="3"
  186. Foreground="{DynamicResource SukiLowText}"
  187. Text="Date Modified" />
  188. <GridSplitter Grid.Column="4"
  189. Background="Transparent"
  190. ResizeDirection="Columns" />
  191. <Rectangle Grid.Column="4"
  192. Width="1"
  193. HorizontalAlignment="Left"
  194. VerticalAlignment="Stretch"
  195. Fill="{DynamicResource SukiControlBorderBrush}" />
  196. <TextBlock Grid.Column="5"
  197. Foreground="{DynamicResource SukiLowText}"
  198. Text="Type" />
  199. <GridSplitter Grid.Column="6"
  200. Background="Transparent"
  201. ResizeDirection="Columns" />
  202. <Rectangle Grid.Column="6"
  203. Width="1"
  204. HorizontalAlignment="Left"
  205. VerticalAlignment="Stretch"
  206. Fill="{DynamicResource SukiControlBorderBrush}" />
  207. <TextBlock Grid.Column="7"
  208. Foreground="{DynamicResource SukiLowText}"
  209. Text="Size" />
  210. <GridSplitter Grid.Column="8"
  211. Background="Transparent"
  212. ResizeDirection="Columns" />
  213. <Rectangle Grid.Column="8"
  214. Width="1"
  215. HorizontalAlignment="Left"
  216. VerticalAlignment="Stretch"
  217. Fill="{DynamicResource SukiControlBorderBrush}" />
  218. </Grid>
  219. <DockPanel Margin="0,0,0,5">
  220. <ListBox x:Name="PART_Files"
  221. Margin="0,5"
  222. Classes="Stack"
  223. ItemsSource="{Binding Items}"
  224. ScrollViewer.HorizontalScrollBarVisibility="Disabled"
  225. SelectedItems="{Binding SelectedItems}"
  226. SelectionMode="{Binding SelectionMode}">
  227. <ListBox.ItemTemplate>
  228. <DataTemplate>
  229. <Grid Background="Transparent">
  230. <Grid.ColumnDefinitions>
  231. <ColumnDefinition SharedSizeGroup="Icon" />
  232. <ColumnDefinition SharedSizeGroup="Name" />
  233. <ColumnDefinition SharedSizeGroup="Splitter" />
  234. <ColumnDefinition SharedSizeGroup="Modified" />
  235. <ColumnDefinition SharedSizeGroup="Splitter" />
  236. <ColumnDefinition SharedSizeGroup="Type" />
  237. <ColumnDefinition SharedSizeGroup="Splitter" />
  238. <ColumnDefinition SharedSizeGroup="Size" />
  239. <ColumnDefinition SharedSizeGroup="Splitter" />
  240. </Grid.ColumnDefinitions>
  241. <Image Grid.Column="0"
  242. Width="16"
  243. Height="16">
  244. <DrawingImage Drawing="{Binding IconKey, Converter={StaticResource Icons}}" />
  245. </Image>
  246. <TextBlock Grid.Column="1" Text="{Binding DisplayName}" />
  247. <TextBlock Grid.Column="3" Text="{Binding Modified}" />
  248. <TextBlock Grid.Column="5" Text="{Binding Type}" />
  249. <TextBlock Grid.Column="7" HorizontalAlignment="Right">
  250. <TextBlock.Text>
  251. <Binding Path="Size">
  252. <Binding.Converter>
  253. <internal:FileSizeStringConverter />
  254. </Binding.Converter>
  255. </Binding>
  256. </TextBlock.Text>
  257. </TextBlock>
  258. </Grid>
  259. </DataTemplate>
  260. </ListBox.ItemTemplate>
  261. </ListBox>
  262. </DockPanel>
  263. </DockPanel>
  264. </controls:GlassCard>
  265. </DockPanel>
  266. </Grid>
  267. </Border>
  268. </VisualLayerManager>
  269. </ControlTemplate>
  270. </Setter>
  271. </ControlTheme>
  272. </ResourceDictionary>