private async void StructureTreeExpanded(object sender, RoutedEventArgs e) { TreeViewItem treeViewItem = (TreeViewItem)e.OriginalSource; if (treeViewItem.Header is StructureItem) { StructureItem currentStructureItem = treeViewItem.Header as StructureItem; if (currentStructureItem != null) { if (currentStructureItem is DirectoryItem) { await ChangeStatusText("Loading data..."); DirectoryItem directoryItem = currentStructureItem as DirectoryItem; directoryItem.IsChanged = true; foreach (StructureItem childStructureItem in directoryItem.Items) { if (childStructureItem is DirectoryItem) { (childStructureItem as DirectoryItem).IsChanged = true; } } await ChangeStatusText("Ready."); } } } }
private void WalkThroughTree(DirectoryInfo root, DirectoryItem structureItem, bool digDown) { FileInfo[] files = null; DirectoryInfo[] subdirs = null; try { files = root.GetFiles(); subdirs = root.GetDirectories(); structureItem.PermissionToItem = PermissionStatus.P_GRANDED; } catch (UnauthorizedAccessException ex) { Console.WriteLine(ex.Message); structureItem.PermissionToItem = PermissionStatus.P_DENIED; } catch (Exception ex) { Console.WriteLine(ex.Message); } structureItem.ClearItemsCollection(); if (subdirs != null) { foreach (DirectoryInfo directoryInfo in subdirs) { DirectoryItem currentStructureItem = new DirectoryItem(directoryInfo.Name, directoryInfo.FullName, RefreshChildItemsStructure) { Attributes = directoryInfo.Attributes, Parent = structureItem }; structureItem.AddNewItem(currentStructureItem); if (digDown) { WalkThroughTree(directoryInfo, currentStructureItem, true); } } } if (files != null) { foreach (FileInfo fileInfo in files) { FileItem currentStructureItem = new FileItem(fileInfo.Name, fileInfo.FullName) { Attributes = fileInfo.Attributes, FileSize = fileInfo.Length, Parent = structureItem }; structureItem.AddNewItem(currentStructureItem); } } }
public StructureItem GetDiskTreeStructure(string disk) { DriveInfo driveInfo = new DriveInfo(disk); DirectoryItem structureItem = new DirectoryItem(driveInfo.Name.ToUpper(), driveInfo.Name, RefreshChildItemsStructure); if (driveInfo.IsReady) { DirectoryInfo rootDirectoryInfo = driveInfo.RootDirectory; AddElementsToStructure(rootDirectoryInfo, structureItem); } else { Console.WriteLine($"Disk {disk} could not be read"); } return(structureItem); }
private void MenuItemDeleteClick(object sender, RoutedEventArgs e) { try { MenuItem clickedMenuItem = sender as MenuItem; StructureItem structureItem = clickedMenuItem.DataContext as StructureItem; DirectoryItem parentDirectory = structureItem.Parent; FilesManagement.RemoveElement(structureItem); if (parentDirectory != null) { parentDirectory.IsChanged = true; } } catch (Exception ex) { StatusText.Text = $"Problem while deleting. {ex.Message}"; } }
public void AddElementsToStructure(DirectoryInfo root, DirectoryItem structureItem) { WalkThroughTree(root, structureItem, false); }
private void RefreshChildItemsStructure(DirectoryItem structureItem) { DirectoryInfo root = new DirectoryInfo(structureItem.Path); AddElementsToStructure(root, structureItem); }