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