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.");
                    }
                }
            }
        }
Exemplo n.º 2
0
        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);
                }
            }
        }
Exemplo n.º 3
0
        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}";
            }
        }
Exemplo n.º 5
0
 public void AddElementsToStructure(DirectoryInfo root, DirectoryItem structureItem)
 {
     WalkThroughTree(root, structureItem, false);
 }
Exemplo n.º 6
0
        private void RefreshChildItemsStructure(DirectoryItem structureItem)
        {
            DirectoryInfo root = new DirectoryInfo(structureItem.Path);

            AddElementsToStructure(root, structureItem);
        }