private void FillDisk() { List <BaseViewItem> list = new List <BaseViewItem>(); try { // перебираем элементы текущий папки и наполняем список элементами foreach (var entry in Environment.GetLogicalDrives()) { try { var item = new BaseViewItem() { MainPath = entry, Name = entry }; list.Add(item); } catch { // skip error } } } catch { // skip error } // сортировка по типу (папка/файл), а потом по имени Items = list.OrderBy(o => o.Name).ToList(); }
/// <summary> /// Вывод на экран строки элемента /// </summary> /// <param name="item"></param> static void PrintItem(BaseViewItem item) { var name = item.Name.Length <= 50 ? item.Name : $"{item.Name.Substring(0, 47)}..."; var itemType = item.Size.HasValue ? string.Empty : "dir"; var size = item.Size.HasValue ? BytesSizeForamt(item.Size.Value) : string.Empty; Console.WriteLine($"{name,-50} {itemType,3} {size,15}"); }
static bool DeleteRequest(BaseViewItem item) { Console.ResetColor(); Console.Clear(); Console.WriteLine(item.MainPath); Console.ForegroundColor = ConsoleColor.Red; Console.Write("Удалить выбранный элемент? "); Console.ResetColor(); var key = Console.ReadKey(); return(key.Key == ConsoleKey.Y); }
/// <summary> /// Заполнение списка элементами выбранной папки /// </summary> /// <param name="path"></param> private void FillItems(string path) { List <BaseViewItem> list = new List <BaseViewItem>(); try { // перебираем элементы текущий папки и наполняем список элементами foreach (var entry in Directory.GetFileSystemEntries(path)) { try { var item = new BaseViewItem() { MainPath = entry, Name = Path.GetFileName(entry), Size = File.Exists(entry) ? new FileInfo(entry).Length : (long?)null }; list.Add(item); } catch { // skip error } } } catch { // skip error } // сортировка по типу (папка/файл), а потом по имени Items = list.OrderBy(o => o.Size.HasValue).ThenBy(o => o.Name).ToList(); // поиск предыдущий папки var itemParent = new BaseViewItem() { Name = "." }; var parent = Directory.GetParent(path); if (parent != null && !parent.FullName.Equals(path)) { itemParent.MainPath = parent.FullName; } Items.Insert(0, itemParent); }
/// <summary> /// Перерисовка экрана для отображения списка /// </summary> /// <param name="items">Список текущих элементов</param> /// <param name="selected">Выбранный элемент списка</param> static void ShowList(IEnumerable <BaseViewItem> items, BaseViewItem selected = null) { Console.ResetColor(); Console.Clear(); foreach (var item in items) { if (item.Equals(selected)) { Console.BackgroundColor = ConsoleColor.White; Console.ForegroundColor = ConsoleColor.Black; } else { Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.White; } PrintItem(item); } Console.ResetColor(); }