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

ref: 5ece5078e5bbbdb76d5f88c6e14171bd978656b6 CTU-FEE-B0B35APO-Semestral-project/file-browser/src/gui_list_commands.c -rw-r--r-- 2.1 KiB
5ece5078 — František Boháček feat: add text zoom to text viewer 3 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include "gui_list_commands.h"
#include "direction.h"
#include "gui.h"
#include "input.h"
#include "keyboard_const.h"
#include "rotation_const.h"

static void command_handler_gui_list_clicked(void *state, int amount) {
  gui_list_command_state_t *click_state = (gui_list_command_state_t*)state;
  if (amount > 1) {
    click_state->clicked(click_state->container, click_state->state,
                         gui_list_get_selected_index(click_state->container));
  }
}

static void command_handler_move(void *state, direction_t direction, int amount) {
  gui_list_command_state_t *click_state = (gui_list_command_state_t *)state;
  if (click_state->window == click_state->gui->active_window) {
    int32_t x = 0, y = 0;
    direction_move_xy(direction, &x, &y, amount);
    gui_list_scroll(click_state->container, (int16_t)x, (int16_t)y);
  }
}

static void command_handler_move_left(void *state, int amount) {
  command_handler_move(state, LEFT, amount);
}

static void command_handler_move_right(void *state, int amount) {
  command_handler_move(state, RIGHT, amount);
}

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

static void command_handler_move_up(void *state, int amount) {
  command_handler_move(state, UP, amount);
}

void gui_list_commands_register(commands_t *commands, gui_list_command_state_t *state) {
  commands_register(commands, IN_KEYBOARD, 13, command_handler_gui_list_clicked, state);

  commands_register(commands, IN_KEYBOARD, KEYBOARD_DOWN,
                    command_handler_move_down, state);
  commands_register(commands, IN_KEYBOARD, KEYBOARD_UP, command_handler_move_up,
                    state);
  commands_register(commands, IN_KEYBOARD, KEYBOARD_LEFT,
                    command_handler_move_left, state);
  commands_register(commands, IN_KEYBOARD, KEYBOARD_RIGHT,
                    command_handler_move_right, state);

  commands_register(commands, IN_ENCODER_ROTATE, ROTATION_ENCODER_HORIZONTAL,
                    command_handler_move_right, state);
  commands_register(commands, IN_ENCODER_ROTATE, ROTATION_ENCODER_VERTICAL,
                    command_handler_move_down, state);
}
Do not follow this link