private async static Task <int> OpenSubFolder(StorageFolder Folder, int IDList, StorageListTypes type) { return(await Task.Run(async() => { var FolderItemIDs = new List <int>(); foreach (IStorageItem Item in await Folder.GetItemsAsync()) { StorageApplicationPermissions.FutureAccessList.Add(Item); if (Item.IsOfType(StorageItemTypes.File)) { StorageFile file = (StorageFile)Item; if (file.ContentType.Contains("text") || LanguagesHelper.IsFileLanguageIsCompatible(file.Name)) { var tab = new InfosTab { TabName = file.Name, TabStorageMode = type, TabContentType = ContentType.File, CanBeDeleted = true, CanBeModified = true, TabOriginalPathContent = file.Path, TabInvisibleByDefault = true, TabType = LanguagesHelper.GetLanguageType(file.Name) }; int id_tab = await TabsWriteManager.CreateTabAsync(tab, IDList, false); await new StorageRouter(TabsAccessManager.GetTabViaID(new TabID { ID_Tab = id_tab, ID_TabsList = IDList }), IDList).ReadFile(true); FolderItemIDs.Add(id_tab); } } else { FolderItemIDs.Add(await OpenSubFolder((StorageFolder)Item, IDList, type)); } } return await TabsWriteManager.CreateTabAsync(new InfosTab { TabName = Folder.Name, TabOriginalPathContent = Folder.Path, TabContentType = ContentType.Folder, FolderContent = FolderItemIDs, FolderOpened = false, TabInvisibleByDefault = true }, IDList, false); })); }
public static async Task <List <int> > OpenFolder(int IDList, StorageListTypes type) { var list_ids = new List <int>(); var opener = new FolderPicker(); opener.ViewMode = PickerViewMode.Thumbnail; opener.SuggestedStartLocation = PickerLocationId.ComputerFolder; opener.FileTypeFilter.Add("*"); var Folder = await opener.PickSingleFolderAsync(); if (Folder != null) { StorageApplicationPermissions.FutureAccessList.Add(Folder); foreach (IStorageItem Item in await Folder.GetItemsAsync()) { await Task.Run(async() => { if (Item.IsOfType(StorageItemTypes.File)) { StorageFile file = (StorageFile)Item; if (file != null) { StorageApplicationPermissions.FutureAccessList.Add(file); if (file.ContentType.Contains("text") || LanguagesHelper.IsFileLanguageIsCompatible(file.Name)) { var tab = new InfosTab { TabName = file.Name, TabStorageMode = type, TabContentType = ContentType.File, CanBeDeleted = true, CanBeModified = true, TabOriginalPathContent = file.Path, TabInvisibleByDefault = true, TabType = LanguagesHelper.GetLanguageType(file.Name) }; int id_tab = Task.Run(async() => { return(await TabsWriteManager.CreateTabAsync(tab, IDList, false)); }).Result; if (Task.Run(async() => { return(await new StorageRouter(TabsAccessManager.GetTabViaID(new TabID { ID_Tab = id_tab, ID_TabsList = IDList }), IDList).ReadFile(true)); }).Result) { Messenger.Default.Send(new STSNotification { Type = TypeUpdateTab.NewTab, ID = new TabID { ID_Tab = id_tab, ID_TabsList = IDList } }); } list_ids.Add(id_tab); } } } else { StorageFolder FolderItem = (StorageFolder)Item; list_ids.Add(await OpenSubFolder(FolderItem, IDList, type)); } }); } await TabsWriteManager.CreateTabAsync(new InfosTab { TabName = Folder.Name, TabOriginalPathContent = Folder.Path, TabContentType = ContentType.Folder, FolderContent = list_ids, FolderOpened = true }, IDList, true); } return(list_ids); }