private ListPage addListPage(Directory path, bool isRoot = false, FileSystemItem selection = null) { // add new list ListPage list = null; try { list = new ListPage(path, isRoot, selection); } catch (UnauthorizedAccessException) { addMessagePage(ColumnMessages.AccessDenied); return(null); } stackMain.Children.Add(list); // subscribe to events list.SelectedMultiple += list_SelectedMultiple; list.SelectedNothing += list_SelectedNothing; list.SelectedFile += list_SelectedFile; list.SelectedDirectory += list_SelectedDirectory; list.SelectedJump += list_SelectedDirectory; // future: have settings to reset home? list.SelectedLink += list_SelectedLink; list.ItemDoubleClicked += list_ItemDoubleClicked; return(list); }
private void trimRight(ListPage source) { var start = stackMain.Children.IndexOf(source) + 1; var finish = stackMain.Children.Count - 1; stackMain.Children.RemoveRange(start, finish); }
/*Directory getLowestCommonAncestor(Directory path1, Directory path2) * { * var chunks1 = path1.Path.Split('\\'); * var chunks2 = path2.Path.Split('\\'); * * var bloodLine = new List<String>(); * for (int i = 0; i < Math.Min(chunks1.Length, chunks2.Length); i++) * { * if (chunks1[i] != chunks2[i]) * break; * * bloodLine.Add(chunks1[i]); * } * * if (bloodLine.Count == 0) * return null; * else * return new Directory(String.Join("\\", bloodLine.ToArray())); * }*/ private ListPage Navigate(ListPage source, Directory item, FileSystemItem selection = null) { // trim columns to right and add new list if (selection == null) { trimRight(source); } var list = addListPage(item, false, selection); navigationComplete(item); return(list); }
void list_SelectedMultiple(ListPage sender, Directory fromDirectory, FileSystemItem[] selection) { trimRight(sender); addInfoPage(selection); }
void list_SelectedNothing(ListPage sender, Directory fromDirectory) { trimRight(sender); }
void list_SelectedDirectory(ListPage sender, Directory fromDirectory, Directory selection) { //Navigate(selection); Navigate(sender, selection); }
void list_SelectedFile(ListPage sender, Directory fromDirectory, File selection) { trimRight(sender); }
void list_SelectedLink(ListPage sender, Directory fromDirectory, Link selection) { trimRight(sender); }