Example #1
0
        public IsoDirectory(IsoDirectory parent, TreeNode directory, UInt32 level, string childNumber)
            : base(directory, false, childNumber)
        {
            m_parent = parent;

            this.Initialize(directory, level, null);
        }
Example #2
0
        // For ROOT !!
        public IsoDirectory(TreeNode directory, UInt32 level, string childNumber, ProgressDelegate Progress)
            : base(directory, true, childNumber)
        {
            m_parent = this;

            this.Initialize(directory, level, Progress);
        }
Example #3
0
        private void Initialize(DirectoryInfo directory, uint level, ProgressDelegate Progress)
        {
            FileSystemInfo[] children = directory.GetFileSystemInfos();

            if (children != null)
            {
                Progress?.Invoke(this, new ProgressEventArgs(0, children.Length));
                int childNumberLength = children.Length.ToString().Length;
                for (int i = 0; i < children.Length; i++)
                {
                    IsoFolderElement child;
                    string           childNumber = string.Format("{0:D" + childNumberLength.ToString() + "}", i);
                    if (children[i].GetType() == typeof(DirectoryInfo))
                    {
                        child = new IsoDirectory(this, (DirectoryInfo)children[i], level + 1, childNumber);
                    }
                    else
                    {
                        child = new IsoFile((FileInfo)children[i], childNumber);
                    }

                    Children.Add(child);

                    Progress?.Invoke(this, new ProgressEventArgs(i));
                }
            }
            Children.Sort();

            CalculateSize();
        }
Example #4
0
        public IsoDirectory(IsoDirectory parent, DirectoryInfo directory, uint level, string childNumber)
            : base(directory, false, childNumber)
        {
            Parent = parent;

            Initialize(directory, level, null);
        }
Example #5
0
        public static void SetExtent2(ArrayList stack, int index, UInt32 currentExtent)
        {
            if (index >= stack.Count)
            {
                return;
            }

            IsoDirectory currentDir = (IsoDirectory)stack[index];

            currentDir.Extent2 = currentExtent;

            UInt32 newCurrentExtent = currentExtent + currentDir.Size2 / IsoAlgorithm.SectorSize;

            foreach (IsoFolderElement child in currentDir.Children)
            {
                if (child.IsDirectory)
                {
                    stack.Add(child);
                }
            }
            SetExtent2(stack, index + 1, newCurrentExtent);
        }
Example #6
0
        private void Initialize(TreeNode directory, UInt32 level, ProgressDelegate Progress)
        {
            m_level = level;

            TreeNode[] children = directory.GetAllChildren();

            if (children != null)
            {
                if (Progress != null)
                {
                    Progress(this, new ProgressEventArgs(0, children.Length));
                }
                int childNumberLength = children.Length.ToString().Length;
                for (int i = 0; i < children.Length; i++)
                {
                    IsoFolderElement child;
                    string           childNumber = String.Format("{0:D" + childNumberLength.ToString() + "}", i);
                    if (children[i].IsDirectory)
                    {
                        child = new IsoDirectory(this, children[i], level + 1, childNumber);
                    }
                    else
                    {
                        child = new IsoFile(children[i], childNumber);
                    }

                    m_children.Add(child);

                    if (Progress != null)
                    {
                        Progress(this, new ProgressEventArgs(i));
                    }
                }
                m_children.Sort();
            }

            this.CalculateSize();
        }