(DirectoryViewModel.GetFiles): new virtual method.

This commit is contained in:
morkt 2014-07-30 08:59:17 +04:00
parent 8e0f1a36ff
commit 23030ac225

View File

@ -76,6 +76,11 @@ namespace GARbro.GUI
} }
} }
public virtual IEnumerable<Entry> GetFiles (IEnumerable<EntryViewModel> entries)
{
return entries.Select (e => e.Source);
}
public EntryViewModel Find (string name) public EntryViewModel Find (string name)
{ {
return this.FirstOrDefault (e => e.Name.Equals (name, System.StringComparison.OrdinalIgnoreCase)); return this.FirstOrDefault (e => e.Name.Equals (name, System.StringComparison.OrdinalIgnoreCase));
@ -180,15 +185,24 @@ namespace GARbro.GUI
UpdateModel (pos.ArchivePath); UpdateModel (pos.ArchivePath);
} }
public IEnumerable<Entry> GetFiles (EntryViewModel entry) public override IEnumerable<Entry> GetFiles (IEnumerable<EntryViewModel> entries)
{ {
if (!entry.IsDirectory) var list = new List<Entry>();
return new Entry[] { entry.Source }; foreach (var entry in entries)
{
string path = GetPath (entry.Name); if (!entry.IsDirectory) // add ordinary file
return from file in Source list.Add (entry.Source);
where file.Name.StartsWith (path) else if (".." == entry.Name) // skip reference to parent directory
select file; continue;
else // add all files contained within directory, recursive
{
string path = GetPath (entry.Name);
list.AddRange (from file in Source
where file.Name.StartsWith (path)
select file);
}
}
return list;
} }
string GetPath (string dir) string GetPath (string dir)