private IEnumerable <Microsoft.SharePoint.Client.File> GetFiles(Microsoft.SharePoint.Client.Folder folder)
        {
            var files = new List <Microsoft.SharePoint.Client.File>();

            folder.EnsureProperties(f => f.Folders, f => f.ServerRelativeUrl, f => f.ServerRelativePath, f => f.ListItemAllFields);
            if (folder.Folders.Any())
            {
                foreach (var subfolder in folder.Folders)
                {
                    files.AddRange(GetFiles(subfolder));
                }
            }
            var folderFiles = folder.EnsureProperty(f => f.Files);

            files.AddRange(folderFiles);
            return(files);
        }
Exemple #2
0
        private BaseNode DoSPFolder(Microsoft.SharePoint.Client.Folder folder, BaseNode parentNode, BaseNode rootNode, bool isRoot = false)
        {
            BaseNode myNode = null;

            folder.EnsureProperties(f => f.Folders, f => f.Files, f => f.Name, f => f.ServerRelativeUrl);

            try
            {
                myNode = new FolderNode(folder);

                if (!isRoot)
                {
                    parentNode.Children.Add(myNode);
                }

                myNode.SPObject      = folder;
                myNode.ParentNode    = parentNode;
                myNode.RootNode      = rootNode;
                myNode.NodeConnector = this;
                myNode.LoadedData    = true;

                folder.Context.Load(folder.Folders);
                folder.Context.ExecuteQueryRetry();

                try
                {
                    foreach (var subfolder in folder.Folders.OrderBy(f => f.Name))
                    {
                        BaseNode childNode = new FolderNode(subfolder);
                        myNode.Children.Add(childNode);

                        childNode.SPObject      = subfolder;
                        childNode.ParentNode    = myNode;
                        childNode.RootNode      = rootNode;
                        childNode.NodeConnector = this;
                    }

                    foreach (var file in folder.Files.OrderBy(f => f.Name))
                    {
                        BaseNode fileNode = new FileNode(file);
                        myNode.Children.Add(fileNode);

                        fileNode.SPObject      = file;
                        fileNode.ParentNode    = parentNode;
                        fileNode.RootNode      = rootNode;
                        fileNode.NodeConnector = this;

                        try
                        {
                            //
                            if (fileNode.Title != null && fileNode.Title.Contains("."))
                            {
                                var    els       = fileNode.Title.Split('.');
                                string extension = "." + els[els.Length - 1];
                                //Icon icon = Icon.ExtractAssociatedIcon(file.FullName);
                                Icon icon = ShellIcon.GetSmallIconFromExtension(extension);
                                fileNode.IconObject = icon.ToBitmap();
                                if (fileNode.IconObject.Width != 16)
                                {
                                    fileNode.IconObject = new Bitmap(fileNode.IconObject, 16, 16);
                                }/**/
                            }
                        }
                        catch (Exception)
                        {
                            //skip if exception happens here... the default icon will be shown
                        }
                    }
                }
                catch
                {
                    return(myNode);
                }
            }
            catch
            {
                return(myNode);
            }

            return(myNode);
        }