private async Task DownloadAdvanced(Directory directory, string toLocalPath)
        {
            labelAction.Text  = "Downloading...";
            labelContent.Text = directory.Path;
            bool   rootDownload = directory.Path == BrickExplorer.ROOT_PATH;
            string localPath    = (rootDownload) ? System.IO.Path.Combine(toLocalPath, Manager.Brick.Name) : System.IO.Path.Combine(toLocalPath, directory.Name);

            System.IO.Directory.CreateDirectory(localPath);

            File[] files = await BrickExplorer.GetFiles(directory.Path);

            foreach (File file in files)
            {
                labelContent.Text = file.Path;
                byte[] data = await file.Download();

                if (data != null && data.Length > 0)
                {
                    string filePath = System.IO.Path.Combine(localPath, file.FileName);
                    using (System.IO.FileStream fs = new System.IO.FileStream(filePath, System.IO.FileMode.Create))
                    {
                        fs.Write(data, 0, data.Length);
                    }
                }
            }
            Directory[] subDirectories = await BrickExplorer.GetDirectories(directory.Path);

            foreach (Directory subDirectory in subDirectories)
            {
                await DownloadAdvanced(subDirectory, localPath);
            }
        }
        public static async Task <DirectoryContent> Get(Directory directory)
        {
            DirectoryContent content = new DirectoryContent
            {
                Path = directory.Path,
                Info = new DirectoryInfo(),
            };

            switch (UserSettings.Mode)
            {
            case Mode.BASIC:
            {
                switch (directory.Path)
                {
                case BrickExplorer.ROOT_PATH:
                {
                    List <Directory> dirs = new List <Directory>();
                    dirs.Add(await BrickExplorer.GetDirectory(BrickExplorer.PROJECTS_PATH));
                    if (Manager.Brick.SDCard != null)
                    {
                        dirs.Add(await BrickExplorer.GetDirectory(BrickExplorer.SDCARD_PATH));
                    }
                    content.Directories    = dirs.ToArray();
                    content.Info.ItemCount = content.Directories.Length;
                    break;
                }

                case BrickExplorer.PROJECTS_PATH:
                {
                    content.Directories = await Manager.Brick.Drive.GetDirectories();

                    content.Info.ItemCount = content.Directories.Length;
                    break;
                }

                case BrickExplorer.SDCARD_PATH:
                {
                    content.Directories = await Manager.Brick.SDCard.GetDirectories();

                    content.Info.ItemCount = content.Directories.Length;
                    break;
                }

                default:
                {
                    //only get files
                    content.Files = await BrickExplorer.GetFiles(directory.Path);

                    foreach (File file in content.Files)
                    {
                        content.Info.TotalByteSize += file.Size;
                    }
                    content.Info.ItemCount = content.Files.Length;
                    break;
                }
                }
                return(content);
            }

            default:
            {
                Framework.Core.DirectoryContent dc = await BrickExplorer.GetDirectoryContent(directory.Path);

                content.Directories = dc.Directories;
                content.Files       = dc.Files;
                foreach (File file in content.Files)
                {
                    content.Info.TotalByteSize += file.Size;
                }
                content.Info.ItemCount = content.Directories.Length + content.Files.Length;
                return(content);
            }
            }
        }
        private async Task DownloadBasic(Directory directory, string toLocalPath)
        {
            labelAction.Text  = "Downloading...";
            labelContent.Text = directory.Path;
            string localPath = System.IO.Path.Combine(toLocalPath, directory.Name);

            switch (directory.Path)
            {
            case BrickExplorer.ROOT_PATH:
            {
                localPath = System.IO.Path.Combine(toLocalPath, Manager.Brick.Name);
                break;
            }

            case BrickExplorer.PROJECTS_PATH:
            {
                localPath = System.IO.Path.Combine(toLocalPath, "Drive");
                break;
            }

            case BrickExplorer.SDCARD_PATH:
            {
                localPath = System.IO.Path.Combine(toLocalPath, "SDCard");
                break;
            }
            }

            System.IO.Directory.CreateDirectory(localPath);

            if (directory.Path != BrickExplorer.ROOT_PATH)
            {
                File[] files = await BrickExplorer.GetFiles(directory.Path);

                foreach (File file in files)
                {
                    labelContent.Text = file.Path;
                    byte[] data = await file.Download();

                    if (data != null && data.Length > 0)
                    {
                        string filePath = System.IO.Path.Combine(localPath, file.FileName);
                        using (System.IO.FileStream fs = new System.IO.FileStream(filePath, System.IO.FileMode.Create))
                        {
                            fs.Write(data, 0, data.Length);
                        }
                    }
                }
            }

            switch (directory.Path)
            {
            case BrickExplorer.ROOT_PATH:
            {
                string drivePath = System.IO.Path.Combine(localPath, "Drive");
                System.IO.Directory.CreateDirectory(drivePath);
                foreach (Directory dir in await Manager.Brick.Drive.GetDirectories())
                {
                    await DownloadBasic(dir, drivePath);
                }
                if (Manager.Brick.SDCard != null)
                {
                    string sdPath = System.IO.Path.Combine(localPath, "SDCard");
                    System.IO.Directory.CreateDirectory(sdPath);
                    foreach (Directory dir in await Manager.Brick.SDCard.GetDirectories())
                    {
                        await DownloadBasic(dir, sdPath);
                    }
                }
                break;
            }

            case BrickExplorer.PROJECTS_PATH:
            {
                foreach (Directory dir in await Manager.Brick.Drive.GetDirectories())
                {
                    await DownloadBasic(dir, localPath);
                }
                break;
            }

            case BrickExplorer.SDCARD_PATH:
            {
                foreach (Directory dir in await Manager.Brick.SDCard.GetDirectories())
                {
                    await DownloadBasic(dir, localPath);
                }
                break;
            }
            }
        }
예제 #4
0
 /// <summary>
 /// Gets all files in this directory
 /// </summary>
 /// <returns><c>File[]</c></returns>
 public async Task <File[]> GetFiles()
 {
     return(await BrickExplorer.GetFiles(Path));
 }