private void ShowFiles(TreeNode thisNode, String itemPath) { Boolean addNodes = false; if (thisNode.Tag == null || thisNode.Tag.ToString() == "notloaded") { addNodes = true; thisNode.Nodes.Clear(); } String[] files = myPhone.GetFiles(itemPath); this.listFiles.Items.Clear(); Int32 fileSize; iPhone.FileTypes fileType; listFiles.BeginUpdate(); foreach (String file in files) { if (!(file.Equals(".") || file.Equals("..")) || showDotFolders) { String fullPath = itemPath + "/" + file; ListViewItem thisFile = new ListViewItem(file); thisFile.ImageKey = "Other"; myPhone.GetFileInfoDetails(fullPath, out fileSize, out fileType); ListViewItem.ListViewSubItem size = new ListViewItem.ListViewSubItem(); ListViewItem.ListViewSubItem type = new ListViewItem.ListViewSubItem(); ListViewItem.ListViewSubItem path = new ListViewItem.ListViewSubItem(); size.Name = "Size"; type.Name = "Type"; path.Name = "Path"; size.Text = fileSize.ToString(); thisFile.SubItems.Add(size); ItemProperty thisItem; if ((thisItem = ipItems.FindItem(fullPath)) != null) { thisFile.ImageKey = thisItem.ImageKey; thisFile.Tag = thisItem.Tag; thisFile.ToolTipText = thisFile.Text + Environment.NewLine + fileSize.ToString("N") + " bytes" + Environment.NewLine + thisItem.Name.ToString(); type.Text = thisItem.Name; thisFile.SubItems.Add(type); } else { thisFile.ImageKey = "Other"; thisFile.Tag = "Unknown"; thisFile.ToolTipText = thisFile.Text + Environment.NewLine + fileSize.ToString("N") + " bytes" + Environment.NewLine + thisFile.Tag.ToString(); type.Text = "File"; thisFile.SubItems.Add(type); } path.Text = fullPath; thisFile.SubItems.Add(path); if ((fileType == iPhone.FileTypes.Folder) && addNodes) { TreeNode childNode = new TreeNode(file); childNode.ImageKey = "Folder"; childNode.Name = fullPath; AddNodes(childNode, fullPath, 0); thisNode.Nodes.Add(childNode); thisNode.Tag = "loaded"; Application.DoEvents(); } thisFile.Group = listFiles.Groups[listFiles.Groups.Count - 1]; // Other Group for (Int32 i = 0; i < listFiles.Groups.Count; i++) { if (thisFile.Tag.ToString() == listFiles.Groups[i].Tag.ToString()) { thisFile.Group = listFiles.Groups[i]; break; } } listFiles.Items.Add(thisFile); } } listFiles.EndUpdate(); if (listFiles.Items.Count > 0) { listFiles.Items[0].Selected = true; } if (!listFiles.Visible) { listApps.Visible = false; listFiles.Visible = true; } }