private static ListViewItem2[] GenerateFileSystemItems(string dirPath, ListViewItem2 lviParent) { var fseItems = new List <ListViewItem2>(); var subDirs = Directory.GetDirectories(dirPath); foreach (var d in subDirs) { var di = new DirectoryInfo(d); var subItems = new[] { di.Name, di.Extension, di.CreationTime.ToLongDateString(), di.LastAccessTime.ToLongDateString() }; var lvi = new ListViewItem2(subItems, lviParent) { ForeColor = RandomColor.Next(), ImageIndex = 0 }; var lviFSItems = GenerateFileSystemItems(d, lvi); if (lviFSItems != null && lviFSItems.Length > 0) { lvi.AddChildren(lviFSItems); // TreeListView.AssignParent(lvi, lviParent); } fseItems.Add(lvi); } var lviFiles = GetFileItems(dirPath, lviParent); fseItems.AddRange(lviFiles); return(fseItems.ToArray()); }
public static ListViewItem2[] CreateTree(IEnumerable <XElement> xElements, ListViewItem2 lviParent, bool skipEmpty) { var lvItems = new List <ListViewItem2>(); foreach (XElement xe in xElements) { if (skipEmpty && xe.Attributes().All(xa => string.IsNullOrEmpty(xa.Value))) { continue; } var subItems = xe.Attributes().Select(xa => xa.Value).ToArray(); var lvi = new ListViewItem2(subItems, lviParent) { ForeColor = RandomColor.Next(), ImageIndex = 0 }; lvItems.Add(lvi); if (xe.Elements().Count() > 0) { var lvis = CreateTree(xe.Elements(), lvi, true); if (lvis.Length > 0) { lvi.AddChildren(lvis); } } } return(lvItems.ToArray()); }
private void InitializeListView(string dirPath) { listView.Clear(); listView.Columns.AddRange(new[] { new ColumnHeader { Text = "Name", Width = 250, TextAlign = HorizontalAlignment.Left }, new ColumnHeader { Text = "Type", Width = 100, TextAlign = HorizontalAlignment.Left }, new ColumnHeader { Text = "Length", Width = 200, TextAlign = HorizontalAlignment.Left }, new ColumnHeader { Text = "Date Created", Width = 300, TextAlign = HorizontalAlignment.Left } }); if (false) { ListViewItem2 rootItem = new ListViewItem2(new string[] { Path.GetFileName(dirPath) }, null); this.listView.Items.Add(rootItem); ListViewItem2[] fseItems = GenerateFileSystemItems(dirPath, rootItem); rootItem.AddChildren(fseItems); } else { var fseItems = GenerateFileSystemItems(dirPath, null); foreach (var fseLvi in fseItems) { listView.Items.Add(fseLvi); } } }
private static ListViewItem2[] PrepareTree(IList <XElement> xList, ListViewItem2 lviParent) { var lItems = new List <ListViewItem2>(); for (int i = 0; i < xList.Count; ++i) { if (string.Compare(Names.ExpenseItem, xList[i].Name.LocalName) == 0) { var li = GetListViewItem2(xList[i], lviParent); li.ImageIndex = 0; li.ForeColor = RandomColor.Next(); lItems.Add(li); } else if (string.Compare(Names.ExpenseGroup, xList[i].Name.LocalName) == 0) { var xaName = xList[i].Attribute(Names.Name); var xaDate = xList[i].Attribute(Names.Date); var subItems = new[] { xaDate != null ? xaDate.Value : "?", xaName != null ? xaName.Value : "Expense Group" }; var xGroup = new ListViewItem2(subItems, null) { ImageIndex = 1, ForeColor = RandomColor.Next() }; var xItems = new List <XElement>(xList[i].Elements(XName.Get(Names.ExpenseItem))); var lviItems = new ListViewItem2[xItems.Count]; for (int k = 0; k < xItems.Count; ++k) { var li = GetListViewItem2(xItems[k], xGroup); li.ImageIndex = 0; li.ForeColor = RandomColor.Next(); lviItems[k] = li; } xGroup.AddChildren(lviItems); lItems.Add(xGroup); } else if (string.Compare(Names.Seperator, xList[i].Name.LocalName) == 0) { lItems.Add(new ListViewItem2(null, null)); } else { continue; } } return(lItems.ToArray()); }
public static ListViewItem2[] CreateTreeFromXML(XElement[] xeArray, ListViewItem2 lviParent) { var lvItems = new List <ListViewItem2>(); foreach (XElement xe in xeArray) { var subItems = new string[] { xe.Name.LocalName, xe.HasElements ? "[...]" : xe.Value }; var lvi = new ListViewItem2(subItems, lviParent); lvItems.Add(lvi); XAttribute[] xas = ToArray <XAttribute>(xe.Attributes()); if (xas.Length > 0) { var xaLvis = new ListViewItem2[xas.Length]; for (int i = 0; i < xas.Length; ++i) { var sis = new string[] { xas[i].Name.LocalName, xas[i].Value }; xaLvis[i] = new ListViewItem2(sis, lvi); } lvi.AddChildren(xaLvis); } lvi.ImageIndex = xas.Length > 0 ? 1 : 0; XElement[] xes = ToArray(xe.Elements()); if (xes.Length > 0) { var lvis = CreateTreeFromXML(xes, lvi); if (lvis.Length > 0) { lvi.AddChildren(lvis); } } } return(lvItems.ToArray()); }