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();
        }
Exemple #2
0
        /// <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}");
        }
Exemple #3
0
        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);
        }
Exemple #5
0
 /// <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();
 }