aboutsummaryrefslogtreecommitdiff
path: root/data/client.c
blob: 02c76873c30cdadf5cfcc49fae118deb092db4c0 (plain)
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <assert.h>
#include <curses.h>
#include <locale.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>

#include "logger.c"
#include "tui.c"

#define CTRL(x) (x & 0x1f)

enum {
    PAIR_HEADER = 1,
};

// Globals
bool g_exit;

void ui_print(void) {
    int l = 1;

    tui_line(false, l++, PAIR_HEADER, A_BOLD, "SALIS DATA CLIENT");
}

void ev_handle(void) {
    int ev = getch();

    switch (ev) {
    case CTRL('c'):
        g_exit = true;
        break;
    case KEY_RESIZE:
        clear();
        tui_line_buff_resize();
    default:
        break;
    }
}

void init(void) {
    log_info("Initializing salis data client");

    setlocale(LC_ALL, "");

    initscr();
    raw();
    noecho();
    curs_set(0);
    keypad(stdscr, TRUE);

    start_color();
    init_color(COLOR_BLACK, 0, 0, 0);

    init_pair(PAIR_NORMAL, COLOR_WHITE, COLOR_BLACK);
    init_pair(PAIR_HEADER, COLOR_BLUE, COLOR_BLACK);

    tui_line_buff_resize();
}

void exec(void) {
    while (!g_exit) {
        ui_print();
        ev_handle();
    }
}

void quit(void) {
    tui_line_buff_free();
    endwin();
    log_info("Shutting down salis data client");
}

int main(void) {
    init();
    exec();
    quit();

    return 0;
}