Example #1
0
        public Screen(string path)  // Конструктор принимает строку - путь до папки, элементы которой нужно отобразить
        {
            Path = path;
            DirectoryInfo dir = new DirectoryInfo(Path);

            Content     = dir.GetFileSystemInfos();
            CurrentItem = 0;               // Устанавливает выбранный элемент на 0й
            Mode        = FMode.Directory; // По умолчанию FMode = Directory
        }
Example #2
0
        public Screen(string path)
        { //принимает путь для необходимой папки, элементы которой нужно отобразить
            Path = path;
            DirectoryInfo dir = new DirectoryInfo(Path);

            Content     = dir.GetFileSystemInfos();
            CurrentItem = 0;               // устанавливает выбранный элемент на начальнуй (нулевой)
            Mode        = FMode.Directory; // по умолчанию FMode = Directory
        }
        private void SpecialKeyStateChanged(IAsyncResult ar)
        {
            if ((_stream != null) && ar.IsCompleted)
            {
                try
                {
                    _stream.EndRead(ar);
                }
                catch (OperationCanceledException)
                { }
                catch (IOException)
                {
                    Disconnected?.Invoke(null, EventArgs.Empty);

                    Stop();
                    Start();

                    return;
                }
                byte[] asyncState = ar.AsyncState as byte[];

                if (asyncState[0] == 0x11 || asyncState[0] == 0x00)
                {
                    bool fnDown    = (asyncState[1] & 0x10) == 0x10;
                    bool ejectDown = (asyncState[1] & 0x8) == 0x8;

                    if (fnDown != FnDown)
                    {
                        FnDown = fnDown;
                        Fn?.Invoke(FnDown);

                        FMode?.Invoke(FnDown);
                    }

                    if (ejectDown != EjectDown)
                    {
                        EjectDown = ejectDown;
                        Eject?.Invoke(EjectDown);

                        Key?.Invoke(System.Windows.Input.Key.F13, EjectDown);
                    }
                }
                else if (asyncState[0] == 0x13)
                {
                    PowerButtonDown = asyncState[1] == 1;
                    Power?.Invoke(PowerButtonDown);
                }

                _stream.BeginRead(asyncState, 0, asyncState.Length, new AsyncCallback(SpecialKeyStateChanged), asyncState);
            }
        }
Example #4
0
 public void Display()                                                                                                         // Вывод в консоль всех папок и файлов
 {
     Console.Clear();                                                                                                          // Очистка консоли от предыдущих папок и файлов
     Console.ForegroundColor = ConsoleColor.Yellow;
     Console.WriteLine("Arrow Up - next | Arrow down - previous | Enter - Open | Backspace - Back | R - Rename | Esc - Exit"); // Вывести команды в консоль
     Mode = FMode.Directory;
     for (int i = 0; i < Content.Length; i++)
     {
         if (i == CurrentItem)
         {
             Console.ForegroundColor = ConsoleColor.Green; // Если текущий индекс соответствует выбранному, то выделить цветом
         }
         else
         {
             Console.ForegroundColor = ConsoleColor.White;
         }
         Console.WriteLine(i + 1 + ". " + Content[i].Name);
     }
 }
Example #5
0
 public void Display()
 {                                                                                                                             // выводит в консоль всех папок и файлов
     Console.Clear();                                                                                                          // очищает консоли от предыдущих папок и файлов
     Console.ForegroundColor = ConsoleColor.Yellow;
     Console.WriteLine("Arrow Up - next | Arrow down - previous | Enter - Open | Backspace - Back | R - Rename | Esc - Exit"); // выводит команды в консоль для удобства юзера
     Mode = FMode.Directory;
     for (int i = 0; i < Content.Length; i++)
     {
         if (i == CurrentItem)
         {
             Console.ForegroundColor = ConsoleColor.DarkRed; // выделяет цветом, если индекс соответсвует выбранному
         }
         else
         {
             Console.ForegroundColor = ConsoleColor.White;
         }
         Console.WriteLine(i + 1 + ". " + Content[i].Name);
     }
 }
Example #6
0
        public void Stop()
        {
            if (stream != null)
            {
                stream.Close();
                stream = null;
            }

            if (FnDown)
            {
                Fn?.Invoke(false);
                FMode?.Invoke(false);

                FnDown = false;
            }

            if (EjectDown)
            {
                Eject?.Invoke(false);
                EjectDown = false;
            }
        }
Example #7
0
        private void SpecialKeyStateChanged(IAsyncResult ar)
        {
            // Check Stream
            if (stream == null || !ar.IsCompleted)
            {
                return;
            }

            // Process Event
            if (!(ar.AsyncState is byte[] asyncState))
            {
                return;
            }

            if (asyncState[0] == 0x11 || asyncState[0] == 0x00)
            {
                var fnDown    = (asyncState[1] & 0x10) == 0x10;
                var ejectDown = (asyncState[1] & 0x8) == 0x8;

                if (fnDown != FnDown)
                {
                    FnDown = fnDown;
                    Fn?.Invoke(FnDown);
                    FMode?.Invoke(FnDown);
                }

                if (ejectDown != EjectDown)
                {
                    EjectDown = ejectDown;
                    Eject?.Invoke(EjectDown);
                    Key?.Invoke(System.Windows.Input.Key.F13, EjectDown);
                }
            }
            else if (asyncState[0] == 0x13)
            {
                PowerButtonDown = asyncState[1] == 1;
                Power?.Invoke(PowerButtonDown);
            }

            // End this read
            try
            {
                stream.EndRead(ar);
            }
            catch (IOException)
            {
                // TODO maybe move this restart logic elsewhere?
                Disconnected?.Invoke(null, EventArgs.Empty);

                Stop();
                Start();

                return;
            }
            catch
            {
                // ignored
            }

            //TODO Convert to Observable<byte[0x16]>

            // Next read next
            stream.BeginRead(asyncState, 0, asyncState.Length, SpecialKeyStateChanged, asyncState);
        }