Praeclarum.UI.DocumentsViewController.LoadDocsUnsafe C# (CSharp) Method

LoadDocsUnsafe() private method

private LoadDocsUnsafe ( ) : System.Threading.Tasks.Task
return System.Threading.Tasks.Task
		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);
		}