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 ;
3
6
using Windows . UI . Xaml . Controls ;
7
+ using Windows . UI . Xaml . Media . Imaging ;
4
8
5
9
namespace Files . Dialogs
6
10
{
7
11
public sealed partial class AddItemDialog : ContentDialog
8
12
{
9
- public AddItemType ResultType { get ; private set ; } = AddItemType . Cancel ;
13
+ public AddItemResult ResultType { get ; private set ; } = new AddItemResult ( ) { ItemType = AddItemType . Cancel } ;
10
14
11
15
public AddItemDialog ( )
12
16
{
13
17
InitializeComponent ( ) ;
14
18
AddItemsToList ( ) ;
15
19
}
16
20
17
- public List < AddListItem > AddItemsList = new List < AddListItem > ( ) ;
21
+ public ObservableCollection < AddListItem > AddItemsList = new ObservableCollection < AddListItem > ( ) ;
18
22
19
- public void AddItemsToList ( )
23
+ public async void AddItemsToList ( )
20
24
{
21
25
AddItemsList . Clear ( ) ;
22
26
23
27
AddItemsList . Add ( new AddListItem
24
28
{
25
29
Header = "AddDialogListFolderHeader" . GetLocalized ( ) ,
26
30
SubHeader = "AddDialogListFolderSubHeader" . GetLocalized ( ) ,
27
- Icon = "\xE838 " ,
31
+ Glyph = "\xE838 " ,
28
32
IsItemEnabled = true ,
29
- ItemType = AddItemType . Folder
33
+ ItemType = new AddItemResult ( ) { ItemType = AddItemType . Folder }
30
34
} ) ;
31
35
32
- AddItemsList . Add ( new AddListItem
36
+ var itemTypes = await RegistryHelper . GetNewContextMenuEntries ( ) ;
37
+
38
+ foreach ( var itemType in itemTypes )
33
39
{
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
+
40
62
AddItemsList . Add ( new AddListItem
41
63
{
42
- Header = "AddDialogListBitmapHeader " . GetLocalized ( ) ,
43
- SubHeader = "AddDialogListBitmapSubHeader " . GetLocalized ( ) ,
44
- Icon = "\xEB9F " ,
64
+ Header = "AddDialogListFileHeader " . GetLocalized ( ) ,
65
+ SubHeader = "AddDialogListFileSubHeader " . GetLocalized ( ) ,
66
+ Glyph = "\xE8A5 " ,
45
67
IsItemEnabled = true ,
46
- ItemType = AddItemType . BitmapImage
68
+ ItemType = new AddItemResult ( )
69
+ {
70
+ ItemType = AddItemType . File ,
71
+ ItemInfo = new ShellNewEntry ( )
72
+ }
47
73
} ) ;
48
74
}
49
75
@@ -56,19 +82,24 @@ private void ListView_ItemClick(object sender, ItemClickEventArgs e)
56
82
57
83
public enum AddItemType
58
84
{
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 ; }
64
94
}
65
95
66
96
public class AddListItem
67
97
{
68
98
public string Header { get ; set ; }
69
99
public string SubHeader { get ; set ; }
70
- public string Icon { get ; set ; }
100
+ public string Glyph { get ; set ; }
101
+ public BitmapImage Icon { get ; set ; }
71
102
public bool IsItemEnabled { get ; set ; }
72
- public AddItemType ItemType { get ; set ; }
103
+ public AddItemResult ItemType { get ; set ; }
73
104
}
74
105
}
0 commit comments