async Task LoadDocsUnsafe ()
{
// Console.WriteLine ("LOAD");
var fs = FileSystemManager.Shared.ActiveFileSystem;
SetTitle ();
DocumentConstructor dctor = DocumentAppDelegate.Shared.App.CreateDocument;
//
// Get the items
//
var files = await fs.ListFiles (Directory);
var newItems = (from f in files
select new DocumentsViewItem (
new DocumentReference (f, dctor, isNew: false))).ToList ();
foreach (var item in newItems) {
if (item.Reference.File.IsDirectory) {
if (fs.ListFilesIsFast) {
// Console.WriteLine ("Listing subrefs for " + item.Reference.File);
item.SubReferences = (from f in await fs.ListFiles (item.Reference.File.Path)
where !f.IsDirectory
select new DocumentReference (f, dctor, isNew: false)).ToList ();
}
else {
item.SubReferences = new List<DocumentReference> ();
}
}
}
//
// Sort them
//
if (SortOrder == DocumentsSort.Date) {
newItems.Sort ((a, b) => b.ModifiedTime.CompareTo (a.ModifiedTime));
foreach (var item in newItems) {
if (item.SubReferences != null) {
item.SubReferences.Sort ((a, b) => b.ModifiedTime.CompareTo (a.ModifiedTime));
}
}
} else {
newItems.Sort ((a, b) => string.Compare (a.Reference.Name, b.Reference.Name, StringComparison.OrdinalIgnoreCase));
foreach (var item in newItems) {
if (item.SubReferences != null) {
item.SubReferences.Sort ((a, b) => string.Compare (a.Name, b.Name, StringComparison.OrdinalIgnoreCase));
}
}
}
items = newItems;
Docs = newItems.Select (x => x.Reference).ToList ();
ReloadData ();
UpdateToolbar (false);
}