// DoWork event handler for the file download BackgroundWorker.
        // The selected TreeNode (either a module, folder, or file) is passed in the DoWorkEventArgs e
        private void DownloadBW_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker       = sender as BackgroundWorker;
            TreeNode         selectedNode = e.Argument as TreeNode;

            scraper.DownloadProgress.BeginJob(worker);

            // -- DETERMINE TYPE OF NODE SELECTED --
            // Module selected
            if (selectedNode.Tag.GetType() == typeof(BbModule))
            {
                BbModule module = selectedNode.Tag as BbModule;
                scraper.DownloadProgress.TotalWork = module.Content.CountAllFiles();
                scraper.DownloadModuleFiles(module);
            }
            // Single folder selected
            else if (selectedNode.Tag.GetType() == typeof(BbContentDirectory))
            {
                BbContentDirectory folder = selectedNode.Tag as BbContentDirectory;
                scraper.DownloadProgress.TotalWork = folder.CountAllFiles();
                scraper.DownloadFolder(folder, scraper.OutputDirectory + BbUtils.CleanDirectory(folder.Name) + @"\");
            }
            // Single file selected
            else if (selectedNode.Tag.GetType() == typeof(BbContentItem))
            {
                BbContentItem file = selectedNode.Tag as BbContentItem;
                scraper.DownloadProgress.TotalWork = 1;
                scraper.DownloadFile(file);
            }
        }
예제 #2
0
 public BbContentItem(string name, Uri url, BbContentDirectory folder, string linkType = "local")
 {
     this.name     = name;
     this.url      = url;
     this.linkType = linkType;
     this.folder   = folder;
     filename      = BbUtils.CleanFileName(name).Truncate(40);
 }
예제 #3
0
 // Downloads all files in folders. Used recursively for each subfolder found.
 public void DownloadFolder(BbContentDirectory folder, string directory)
 {
     foreach (BbContentItem file in folder.Files)
     {
         DownloadFile(file, directory);
     }
     foreach (BbContentDirectory subFolder in folder.SubFolders)
     {
         DownloadFolder(subFolder, directory + BbUtils.CleanDirectory(subFolder.Name) + "\\");   //Add subfolder name to directory
     }
 }
예제 #4
0
 // Downloads all files in a module
 public void DownloadModuleFiles(BbModule m)
 {
     DownloadFolder(m.Content, outputDirectory + BbUtils.CleanDirectory(m.Name) + "\\");
 }
예제 #5
0
////////// ### DOWNLOADING CONTENT ###

        //Used in ConsoleUI
        public void DownloadModuleFiles(string moduleName)
        {
            BbModule m = webData.GetModuleByName(moduleName);

            DownloadFolder(m.Content, outputDirectory + BbUtils.CleanDirectory(m.Name) + "\\");
        }