private async Task RebuildSubFolderList(FolderReadingDialog dialog) { foreach (var item in this.NavigationPane.MenuItems) { if (item is NavigationViewItem nv) { if (nv.Content is FolderListItem fd) { fd.Release(); } } } this.NavigationPane.MenuItems.Clear(); if (this.thumbnailPages != null) { foreach (var page in this.thumbnailPages) { page.Release(); } } this.thumbnailPages = new List <ThumbnailPage>(); var count = MediaManager.FolderEntries.Length; dialog.IsIndeterminate = false; dialog.Maximum = count; var trees = FolderListItem.BuildTreeString(MediaManager.FolderEntries); for (int i = 0; i < count; i++) { var folder = MediaManager.FolderEntries[i]; dialog.Value = i; var item = new FolderListItem { FolderEntry = folder, TreeText = trees[i] }; var navigationitem = new NavigationViewItem() { Content = item }; this.NavigationPane.MenuItems.Add(navigationitem); var cover = await MediaManager.FindFolderThumbnailEntry(folder); if (cover != null) { _ = this.UpdateFolderThumbnail(cover, item); } } dialog.Value = count; this.NavigationPane.SelectedItem = this.NavigationPane.MenuItems[0]; }
private async Task UpdateFolderThumbnail(string entry, FolderListItem item) { var bitmap = await MediaManager.CreateThumbnail(entry, 20, 32); SoftwareBitmapSource source = new SoftwareBitmapSource(); await source.SetBitmapAsync(bitmap); item.SetImageSourceAsync(source); }
private void RebuildSubFolderList() { Array.Sort(folderList, (string s1, string s2) => { if (s1 == "\\") { return(-1); } else if (s2 == "\\") { return(1); } else { return(s1.CompareTo(s2)); } }); foreach (var f in folderList) { var folder = f; if (folder != "\\") { char separator = folder.Contains("\\") ? '\\' : '/'; int count = folder.Count(c => c == separator); if (folder.EndsWith("" + separator)) { folder = folder.Substring(0, folder.Length - 1); } folder = folder.Substring(folder.LastIndexOf(separator) + 1); var prefix = ""; for (int i = 0; i < count; i++) { prefix += " "; } folder = prefix + "\u25CF " + folder; } var item = new FolderListItem(folder, f); subFolderListCtrl.Items.Add(item); } }