示例#1
0
        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;
            }
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        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();
                        }
                    }
                }
            }
        }