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