Ejemplo n.º 1
0
 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));
         }
 }
Ejemplo n.º 2
0
        /// <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);
                }
            }
        }