Esempio n. 1
0
        /// <summary>
        /// Parses a full path containing the folder and filename, and creates
        /// the appropriate folder and file entries in the heirarchy.
        /// </summary>
        public FileEntry Add(string filename)
        {
            string fullPath = filename;

            string[]    parts        = fullPath.Split('\\');
            FolderEntry currentEntry = rootFolder;

            for (int x = 0; x < parts.Length - 1; x++) // Last part should be a filename.
            {
                int index = currentEntry.FolderEntries.IndexOf(parts[x]);
                if (index == -1)
                {
                    FolderEntry entry = new FolderEntry(parts[x], currentEntry);
                    currentEntry.FolderEntries.Add(entry);
                    currentEntry = entry;
                }
                else
                {
                    currentEntry = currentEntry.FolderEntries[index];
                }
            }
            FileEntry file = new FileEntry(parts[parts.Length - 1], currentEntry);

            currentEntry.FileEntries.Add(file);
            return(file);
        }
Esempio n. 2
0
        public FolderEntry LocateFolderByPath(string path)
        {
            path = FixPath(path);
            if (path == "")
            {
                return(rootFolder);
            }

            string[]    parts        = path.Split('\\');
            FolderEntry currentEntry = rootFolder;

            // TODO: Consolidate the redundant code between this method and the Add method.
            for (int x = 0; x < parts.Length; x++)
            {
                int index = currentEntry.FolderEntries.IndexOf(parts[x]);
                if (index > -1)
                {
                    currentEntry = currentEntry.FolderEntries[index];
                }
                else
                {
                    return(null);
                }
            }
            return(currentEntry);
        }
Esempio n. 3
0
 public FolderEntry[] ToArray()
 {
     FolderEntry[] entries = new FolderEntry[Count];
     for (int x = 0; x < entries.Length; x++)
     {
         entries[x] = this[x];
     }
     return(entries);
 }
Esempio n. 4
0
 public void Add(FolderEntry folder)
 {
     if (folder.ParentFolder != null)
     {
         //if (folder.ParentFolder.Name == folder.Name)
         //throw new Exception("Uhhh, double you tee eff?");
         InnerList.Add(folder);
     }
 }
Esempio n. 5
0
 public void Remove(FolderEntry folder)
 {
     foreach (FileEntry entry in folder.FileEntries.ToArray())
     {
         folder.FileEntries.Remove(entry);
     }
     foreach (FolderEntry entry in folder.FolderEntries.ToArray())
     {
         folder.FolderEntries.Remove(entry);
     }
     InnerList.Remove(folder);
 }
Esempio n. 6
0
        public string[] GetRecursiveFileList(string path)
        {
            FolderEntry entry = LocateFolderByPath(path);

            if (entry == null)
            {
                return(new string[0]);
            }
            else
            {
                return(entry.GetRecursiveFileList());
            }
        }
Esempio n. 7
0
 public FileEntry(string filename, FolderEntry parentFolder)
 {
     name = Path.GetFileNameWithoutExtension(filename);
     if (filename.IndexOf('.') > -1)
     {
         extension = Path.GetExtension(filename).Substring(1);
     }
     else
     {
         extension = "";
     }
     this.parentFolder = parentFolder;
 }
Esempio n. 8
0
 protected void WriteFolder(IndentedTextWriter writer, FolderEntry folder)
 {
     writer.Indent += 2;
     writer.WriteLine("[" + folder.Name + "]");
     foreach (FolderEntry childFolder in folder.FolderEntries)
     {
         WriteFolder(writer, childFolder);
     }
     foreach (string childFile in folder.FileList())
     {
         writer.WriteLine(childFile);
     }
     writer.Indent -= 2;
 }
Esempio n. 9
0
        public bool RemoveFolder(string path)
        {
            FolderEntry entry = LocateFolderByPath(path);

            if (entry == null)
            {
                return(false);
            }
            if (entry.ParentFolder == null)
            {
                return(false);
            }
            entry.ParentFolder.FolderEntries.Remove(entry);
            return(true);
        }
Esempio n. 10
0
        public FileEntry LocateFileByPath(string path)
        {
            path = FixPath(path);
            string      folder      = Path.GetDirectoryName(path);
            FolderEntry folderEntry = LocateFolderByPath(folder);

            if (folderEntry == null)
            {
                return(null);
            }
            foreach (FileEntry fileEntry in folderEntry.FileEntries)
            {
                string entryLower = fileEntry.FullPath.ToLower();
                string pathLower  = path.ToLower();
                if (entryLower == pathLower)
                {
                    return(fileEntry);
                }
            }
            return(null);
        }
Esempio n. 11
0
 public FolderEntry(string name, FolderEntry parentFolder)
 {
     this.name         = name;
     this.parentFolder = parentFolder;
 }