private void FillTree(TreeView tree, IStorageItem item) { //var fNode = new MyTreeViewNode() { Content = item.Name.ConvertFrom(CURRENT_SRCENC, true) }; MyTreeViewNode fNode = filenode.ContainsKey(item.Path) ? filenode[item.Path] : new MyTreeViewNode() { Content = item.Name.ConvertFrom(CURRENT_SRCENC, true) }; if (item is StorageFolder) { fNode.Icon = IconFolder; fNode.HasUnrealizedChildren = true; fNode.IsExpanded = false; } else if (item is StorageFile) { fNode.Icon = IconFile; } fNode.StorageItem = item; if (!tree.RootNodes.Contains(fNode)) { tree.RootNodes.Add(fNode); flist.TryAdd(fNode, item); filenode.TryAdd(item.Path, fNode); fNode.IsExpanded = true; } }
private async Task <bool> AddTo(TreeViewNode node, IStorageItem item, int deeper = -1) { if (deeper > CURRENT_TREEDEEP) { return(true); } var queryOptions = new QueryOptions(); queryOptions.FolderDepth = FolderDepth.Shallow; if (item is StorageFolder) { var folder = item as StorageFolder; var root = new MyTreeViewNode() { Content = folder.Name.ConvertFrom(CURRENT_SRCENC, true) }; root.Icon = IconFolder; root.HasUnrealizedChildren = true; flist.Add(root, folder); var queryFolders = folder.CreateFolderQueryWithOptions(queryOptions); var sfolders = await queryFolders.GetFoldersAsync(); foreach (var sfolder in sfolders) { var ret = await AddTo(root, sfolder, deeper ++); } var queryFiles = folder.CreateFileQueryWithOptions(queryOptions); var sfiles = await queryFiles.GetFilesAsync(); foreach (var file in sfiles) { var fnode = new MyTreeViewNode() { Content = file.Name.ConvertFrom(CURRENT_SRCENC, true) }; fnode.Icon = IconFile; root.Children.Add(fnode); flist.Add(fnode, file); } node.Children.Add(root); } else if (item is StorageFile) { var file = item as StorageFile; var fnode = new MyTreeViewNode() { Content = file.Name.ConvertFrom(CURRENT_SRCENC, true) }; fnode.Icon = IconFile; node.Children.Add(fnode); flist.Add(fnode, file); } return(true); }
private async Task <bool> FillNode(TreeViewNode node) { bool result = false; NODE_FILLING = true; if (flist.ContainsKey(node)) { var item = flist[node]; var queryOptions = new QueryOptions(CommonFolderQuery.DefaultQuery) { FolderDepth = FolderDepth.Shallow, }; if (item is StorageFolder) { var folder = item as StorageFolder; var queryItems = folder.CreateItemQueryWithOptions(queryOptions); var sItems = await queryItems.GetItemsAsync(); if (node.HasChildren) { node.Children.Clear(); } foreach (var sItem in sItems) { MyTreeViewNode fNode = filenode.ContainsKey(sItem.Path) ? filenode[sItem.Path] : new MyTreeViewNode() { Content = sItem.Name.ConvertFrom(CURRENT_SRCENC, true) }; if (sItem is StorageFolder) { fNode.Icon = IconFolder; fNode.HasUnrealizedChildren = true; fNode.IsExpanded = false; } else if (sItem is StorageFile) { fNode.Icon = IconFile; } fNode.StorageItem = sItem; if (!node.Children.Contains(fNode)) { node.Children.Add(fNode); flist.TryAdd(fNode, sItem); filenode.TryAdd(sItem.Path, fNode); } } } node.HasUnrealizedChildren = false; result = true; } return(result); }
private async void TreeView_ItemInvoked(TreeView sender, TreeViewItemInvokedEventArgs args) { MyTreeViewNode item = args.InvokedItem as MyTreeViewNode; if (TreeFiles.SelectionMode == TreeViewSelectionMode.Single) { TreeFiles.SelectedNodes.Clear(); TreeFiles.SelectedNodes.Add(item); target = item; } if (flist.ContainsKey(item)) { var file = flist[item]; if (file != null) { if (file is StorageFile) { try { var f = file as StorageFile; if (Utils.text_ext.Contains(f.FileType.ToLower())) { edSrc.Visibility = Visibility.Visible; ImagePreview.Visibility = Visibility.Collapsed; UnknownFileInfo.Visibility = Visibility.Collapsed; IBuffer buffer = await FileIO.ReadBufferAsync(f); DataReader reader = DataReader.FromBuffer(buffer); byte[] fileContent = new byte[reader.UnconsumedBufferLength]; reader.ReadBytes(fileContent); fcontent = (byte[])fileContent.Clone(); if (fcontent != null && fcontent is byte[]) { edSrc.Text = fcontent.ToString(CURRENT_SRCENC); } args.Handled = true; UNKNOWNFILE = false; } else if (Utils.image_ext.Contains(f.FileType)) { edSrc.Visibility = Visibility.Collapsed; ImagePreview.Visibility = Visibility.Visible; UnknownFileInfo.Visibility = Visibility.Collapsed; var wb = await f.ToWriteableBitmap(); imgPreview.Source = wb; PreviewInfo.Text = $"{"Size".T()}: {wb.PixelWidth}x{wb.PixelHeight}"; UNKNOWNFILE = false; } else { edSrc.Visibility = Visibility.Collapsed; ImagePreview.Visibility = Visibility.Collapsed; UnknownFileInfo.Visibility = Visibility.Visible; //imgPreview.Source = f.UnknowFile(); imgPreview.Source = null; UNKNOWNFILE = true; edSrc.Text = string.Empty; fcontent = null; PreviewInfo.Text = string.Empty; } //BackgroundCanvas.Invalidate(); } catch (Exception ex) { await new MessageDialog(ex.Message.T(), "ERROR".T()).ShowAsync(); } } } } }