void AssociatedObject_RequestTreeItems(object sender, TreeGridRequestTreeItemsEventArgs args) { if (args.ParentItem == null) { if (viewModel != null) { //get the root list - get all employees who have no boss args.ChildItems = viewModel.EmployeeList.Where(x => x.ReportsTo == -1); //get all employees whose boss's id is -1 (no boss) } else { args.ChildItems = (IEnumerable)fileExplorerViewModel.DriveDetails; } } else //if ParentItem not null, then set args.ChildList to the child items for the given ParentItem. { //get the children of the parent object if (viewModel != null) { EmployeeInfo emp = args.ParentItem as EmployeeInfo; if (emp != null) { //get all employees that report to the parent employee args.ChildItems = viewModel.GetReportees(emp.ID); } } else { FileInfoModel item = args.ParentItem as FileInfoModel; args.ChildItems = fileExplorerViewModel.GetChildFolderContent(item); } } }
/// <summary> /// Initializes a new instance of the <see cref="FileInfoModel"/> class. /// </summary> /// <param name="path">The path.</param> public FileInfoModel Infomodel(string path) { FileInfoModel model = new FileInfoModel(); FileInfo fi = new FileInfo(path); model.FullName = Path.GetFullPath(path); model.ShortName = Path.GetFileNameWithoutExtension(path); if (model.ShortName == "") { model.ShortName = path; model.FileType = "Drive"; System.IO.DriveInfo di = new System.IO.DriveInfo(path); model.TotalSize = (di.TotalSize / 1073741824).ToString(); var freeSpace = (double.Parse(di.TotalFreeSpace.ToString()) / 1073741824); model.TotalFreeSpace = (Math.Round(freeSpace, 1)).ToString(); model.PercentofFreeSpace = 100 - ((double.Parse(model.TotalFreeSpace) / double.Parse(model.TotalSize)) * 100); } else { if ((fi.Attributes & FileAttributes.Directory) != 0) { model.FileType = "Directory"; } else { model.Size = fi.Length.ToString() + "Kb"; model.FileType = Path.GetExtension(path); } } model.DateModified = fi.LastWriteTime; model.DateAccessed = fi.LastAccessTime; model.DateCreated = fi.CreationTime; model.Attributes = fi.Attributes; return(model); }
/// <summary> /// Used to get ChildFolder Content of Particular folder /// </summary> /// <param name="fileNodeItem"></param> /// <returns></returns> public List <FileInfoModel> GetChildFolderContent(FileInfoModel fileNodeItem) { List <FileInfoModel> children = new List <FileInfoModel>(); string folder = fileNodeItem.FullName; try { FileInfo fi = new FileInfo(folder); if ((fi.Attributes & FileAttributes.Directory) != (FileAttributes)0) { DirectoryInfo di = new DirectoryInfo(folder); // Skip Recycle Bin, System Volume Information etc. if (di.Parent != null && (di.Attributes & FileAttributes.Hidden) != (FileAttributes)0 || (int)di.Attributes == -1) { //skip... } else { foreach (string s2 in Directory.GetDirectories(folder)) { FileInfo fi2 = new FileInfo(s2); if ((fi2.Attributes & FileAttributes.Hidden) != (FileAttributes)0) { continue; } children.Add(Infomodel(s2)); } foreach (string s2 in Directory.GetFiles(folder)) { FileInfo fi2 = new FileInfo(s2); if ((fi2.Attributes & FileAttributes.Hidden) != (FileAttributes)0) { continue; } children.Add(Infomodel(s2)); } } } } catch { } return(children); }