void DisplayFolder(int idFolder) { list.Items.Clear(); using (var trans = sess.BeginTransaction()) foreach (var e in EFS.ListChildren(rs, idFolder)) { list.Items.Add(newItem(e)); } }
/// <summary>Iterate over the selected files and folders.</summary> /// <param name="itemIds">Selected item IDs.</param> /// <param name="actFile">Will be called for every file in the selection, including the files in a sumbolders.</param> /// <param name="actFolder">Will be called for every folder in the selection.</param> void IterateSelection(IEnumerable <int> itemIds, Action <EfsEntry, string> actFile, Action <EfsEntry, string> actFolder) { foreach (int idFile in itemIds) { EfsEntry ee = EFS.byId(rs, idFile); if (ee.isDirectory) { actFolder(ee, ee.name); var pending = new Queue <Tuple <string, int> >(); pending.Enqueue(Tuple.Create(ee.name, ee.id)); while (pending.Count > 0) { var p = pending.Dequeue(); foreach (EfsEntry eChild in EFS.ListChildren(rs, p.Item2)) { string path = Path.Combine(p.Item1, eChild.name); if (eChild.isDirectory) { pending.Enqueue(Tuple.Create(path, eChild.id)); actFolder(eChild, path); } else { actFile(eChild, path); } } } } else { actFile(ee, ee.name); } } }