~ruther/CTU-FEE-B0B35APO-Semestral-project

f181e3266233430bb41e7adc279c110a9be3ddc1 — František Boháček 4 years ago 8ed01f6
feat: add text viewer better keyboard controls
2 files changed, 47 insertions(+), 4 deletions(-)

M file-browser/src/file_execute.c
M text-viewer/src/text_viewer_handlers.c
M file-browser/src/file_execute.c => file-browser/src/file_execute.c +1 -1
@@ 36,12 36,12 @@ executing_file_error_t executing_file_execute(char *path, char *args) {

    execl(path, path, args, (char*)NULL);

    // Is reached only in case of an error
    if (errno == EPERM) {
      fprintf(stderr, "Could not execute file: file is not executable\r\n");
      exit(errno);
    }

      // Is reached only in case of an error
    fprintf(
          stderr, "Could not execute file \"%s %s\": %s\r\n", path, args,
          fileaccess_get_error_text(file_operation_error_from_errno(errno)));

M text-viewer/src/text_viewer_handlers.c => text-viewer/src/text_viewer_handlers.c +46 -3
@@ 1,5 1,6 @@
#include "text_viewer_handlers.h"
#include "direction.h"
#include "display_utils.h"
#include "gui_component_text_view.h"
#include "keyboard_const.h"
#include "rotation_const.h"


@@ 15,6 16,22 @@ static void command_handler_move(void *state, direction_t direction,
  }
}

static void command_handler_jump(void *state, direction_t direction,
                                 int amount) {
  component_t *text_view = (component_t *)state;

  if (direction == LEFT || direction == RIGHT) {
    amount = DISPLAY_WIDTH * 0.6;
  } else {
    amount = DISPLAY_HEIGHT * 0.4;
  }

  int32_t x = 0;
  int32_t y = 0;
  direction_move_xy(direction, &x, &y, amount);
  gui_text_view_scroll(text_view, x, y);
}

static void command_handler_move_down(void *state, int amount) {
  command_handler_move(state, DOWN, amount);
}


@@ 30,6 47,21 @@ static void command_handler_move_right(void *state, int amount) {
  command_handler_move(state, RIGHT, amount);
}

static void command_handler_jump_up(void *state, int amount) {
  command_handler_jump(state, UP, amount);
}

static void command_handler_jump_down(void *state, int amount) {
  command_handler_jump(state, DOWN, amount);
}

static void command_handler_jump_right(void *state, int amount) {
  command_handler_jump(state, RIGHT, amount);
}

static void command_handler_jump_left(void *state, int amount) {
  command_handler_jump(state, LEFT, amount);
}
static void command_handler_reset(void *state, int amount) {
  gui_text_view_reset_scroll((component_t *)state);
}


@@ 77,11 109,22 @@ void gui_text_view_register_commands(gui_t *gui, component_t *text_view) {
                    command_handler_move_down, text_view);
  commands_register(gui->commands, IN_KEYBOARD, KEYBOARD_UP,
                    command_handler_move_up, text_view);
  commands_register(gui->commands, IN_KEYBOARD, 'r', command_handler_reset,

  commands_register(gui->commands, IN_KEYBOARD, KEYBOARD_JUMP_LEFT,
                    command_handler_jump_left, text_view);
  commands_register(gui->commands, IN_KEYBOARD, KEYBOARD_JUMP_RIGHT,
                    command_handler_jump_right, text_view);
  commands_register(gui->commands, IN_KEYBOARD, KEYBOARD_PAGE_DOWN,
                    command_handler_jump_down, text_view);
  commands_register(gui->commands, IN_KEYBOARD, KEYBOARD_PAGE_UP,
                    command_handler_jump_up, text_view);

  commands_register(gui->commands, IN_KEYBOARD, KEYBOARD_HOME, command_handler_reset,
                    text_view);
  commands_register(gui->commands, IN_KEYBOARD, 't',

  commands_register(gui->commands, IN_KEYBOARD, KEYBOARD_END,
                    command_handler_full_scroll, text_view);
  commands_register(gui->commands, IN_KEYBOARD, 'f',
  commands_register(gui->commands, IN_KEYBOARD, 'c',
                    command_handler_zoom_reset, text_view);

  commands_register(gui->commands, IN_ENCODER_ROTATE,