1- using Microsoft . Toolkit . Uwp . Extensions ;
2- using System . Collections . Generic ;
1+ using Files . DataModels ;
2+ using Files . Helpers ;
3+ using Microsoft . Toolkit . Uwp . Extensions ;
4+ using System ;
5+ using System . Collections . ObjectModel ;
36using Windows . UI . Xaml . Controls ;
7+ using Windows . UI . Xaml . Media . Imaging ;
48
59namespace Files . Dialogs
610{
711 public sealed partial class AddItemDialog : ContentDialog
812 {
9- public AddItemType ResultType { get ; private set ; } = AddItemType . Cancel ;
13+ public AddItemResult ResultType { get ; private set ; } = new AddItemResult ( ) { ItemType = AddItemType . Cancel } ;
1014
1115 public AddItemDialog ( )
1216 {
1317 InitializeComponent ( ) ;
1418 AddItemsToList ( ) ;
1519 }
1620
17- public List < AddListItem > AddItemsList = new List < AddListItem > ( ) ;
21+ public ObservableCollection < AddListItem > AddItemsList = new ObservableCollection < AddListItem > ( ) ;
1822
19- public void AddItemsToList ( )
23+ public async void AddItemsToList ( )
2024 {
2125 AddItemsList . Clear ( ) ;
2226
2327 AddItemsList . Add ( new AddListItem
2428 {
2529 Header = "AddDialogListFolderHeader" . GetLocalized ( ) ,
2630 SubHeader = "AddDialogListFolderSubHeader" . GetLocalized ( ) ,
27- Icon = "\xE838 " ,
31+ Glyph = "\xE838 " ,
2832 IsItemEnabled = true ,
29- ItemType = AddItemType . Folder
33+ ItemType = new AddItemResult ( ) { ItemType = AddItemType . Folder }
3034 } ) ;
3135
32- AddItemsList . Add ( new AddListItem
36+ var itemTypes = await RegistryHelper . GetNewContextMenuEntries ( ) ;
37+
38+ foreach ( var itemType in itemTypes )
3339 {
34- Header = "AddDialogListTextFileHeader" . GetLocalized ( ) ,
35- SubHeader = "AddDialogListTextFileSubHeader" . GetLocalized ( ) ,
36- Icon = "\xE8A5 " ,
37- IsItemEnabled = true ,
38- ItemType = AddItemType . TextDocument
39- } ) ;
40+ BitmapImage image = null ;
41+ if ( itemType . Icon != null )
42+ {
43+ image = new BitmapImage ( ) ;
44+ await image . SetSourceAsync ( itemType . Icon ) ;
45+ }
46+
47+ AddItemsList . Add ( new AddListItem
48+ {
49+ Header = itemType . Name ,
50+ SubHeader = itemType . Extension ,
51+ Glyph = itemType . Icon != null ? null : "\xE8A5 " ,
52+ Icon = image ,
53+ IsItemEnabled = true ,
54+ ItemType = new AddItemResult ( )
55+ {
56+ ItemType = AddItemType . File ,
57+ ItemInfo = itemType
58+ }
59+ } ) ;
60+ }
61+
4062 AddItemsList . Add ( new AddListItem
4163 {
42- Header = "AddDialogListBitmapHeader " . GetLocalized ( ) ,
43- SubHeader = "AddDialogListBitmapSubHeader " . GetLocalized ( ) ,
44- Icon = "\xEB9F " ,
64+ Header = "AddDialogListFileHeader " . GetLocalized ( ) ,
65+ SubHeader = "AddDialogListFileSubHeader " . GetLocalized ( ) ,
66+ Glyph = "\xE8A5 " ,
4567 IsItemEnabled = true ,
46- ItemType = AddItemType . BitmapImage
68+ ItemType = new AddItemResult ( )
69+ {
70+ ItemType = AddItemType . File ,
71+ ItemInfo = new ShellNewEntry ( )
72+ }
4773 } ) ;
4874 }
4975
@@ -56,19 +82,24 @@ private void ListView_ItemClick(object sender, ItemClickEventArgs e)
5682
5783 public enum AddItemType
5884 {
59- Folder = 0 ,
60- TextDocument = 1 ,
61- BitmapImage = 2 ,
62- CompressedArchive = 3 ,
63- Cancel = 4
85+ Folder ,
86+ File ,
87+ Cancel
88+ }
89+
90+ public class AddItemResult
91+ {
92+ public AddItemType ItemType { get ; set ; }
93+ public ShellNewEntry ItemInfo { get ; set ; }
6494 }
6595
6696 public class AddListItem
6797 {
6898 public string Header { get ; set ; }
6999 public string SubHeader { get ; set ; }
70- public string Icon { get ; set ; }
100+ public string Glyph { get ; set ; }
101+ public BitmapImage Icon { get ; set ; }
71102 public bool IsItemEnabled { get ; set ; }
72- public AddItemType ItemType { get ; set ; }
103+ public AddItemResult ItemType { get ; set ; }
73104 }
74105}
0 commit comments