99 lines
3.4 KiB
C
99 lines
3.4 KiB
C
#include <gint/display.h>
|
|
#include <gint/gint.h>
|
|
#include <gint/keyboard.h>
|
|
#include <gint/timer.h>
|
|
|
|
#include "battery.h"
|
|
#include "term.h"
|
|
#include "ui.h"
|
|
|
|
#include <stdio.h>
|
|
|
|
static char *LOREM_IPSUM =
|
|
"Lorem ipsum dolor sit amet, consectetur adipiscing elit.\nNam vitae purus dolor.\nPraesent in ex tempus, auctor velit at, "
|
|
"vulputate sapien.\nAenean semper, dui vitae iaculis mattis, odio libero aliquet elit, nec tempor nisl turpis vel arcu.\n"
|
|
"Vestibulum eleifend maximus enim at sollicitudin.\nNulla eu commodo justo.\nUt vitae pellentesque erat.\nDuis magna nisl, "
|
|
"eleifend ac massa at, blandit sollicitudin ipsum.\nIntegint_world_swrdum et malesuada fames ac ante ipsum primis in "
|
|
"faucibus.\n"
|
|
"Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.\nUt at libero in turpis porttitor "
|
|
"viverra.\nUt eu pellentesque purus.\nVestibulum aliquet facilisis ante, eget volutpat metus.\nCras semper lacus ac mauris "
|
|
"imperdiet, vel egestas est luctus.\nAliquam elit enim, dignissim nec enim vel, consequat ullamcorper libero.\nPellentesque "
|
|
"at "
|
|
"iaculis lctus.\nPraesent sed velit at tellus hendrerit mattis eu nec velit.\nPhasellus eu quam nec nisi mattis elementum "
|
|
"quis "
|
|
"nec enim.\nNulla efficitur turpis id tempus ultricies.\nPellentesque semper lacinia mi vitae feugiat.\nVestibulum leo nisi, "
|
|
"pretium quis felis non, mattis varius risus.\n"
|
|
"Suspendisse porttitor purus lacinia ante euismod, ut eleifend massa fermentum.\nProin pretium elementum massa, at efficitur "
|
|
"risus iaculis sed.";
|
|
|
|
static volatile int key_poll_timeout;
|
|
static int callback_keypoll(void) {
|
|
key_poll_timeout = 0;
|
|
return TIMER_STOP;
|
|
}
|
|
|
|
int main(void) {
|
|
int tick_ctr = 0;
|
|
int shift_state = 0;
|
|
int alpha_state = 0;
|
|
int off_state = 0;
|
|
|
|
set_statusbar(tick_ctr, shift_state, alpha_state, get_battery_voltage());
|
|
set_menubar();
|
|
tgrid_display();
|
|
|
|
while (1) {
|
|
const int timer = timer_configure(TIMER_ANY, 20000, GINT_CALL(callback_keypoll));
|
|
key_poll_timeout = 1;
|
|
key_event_t kev = getkey_opt(GETKEY_NONE, &key_poll_timeout);
|
|
timer_start(timer);
|
|
|
|
if (kev.type == KEYEV_DOWN) {
|
|
if (off_state) {
|
|
if (kev.key == KEY_ACON) {
|
|
off_state = 0;
|
|
} else {
|
|
continue;
|
|
}
|
|
}
|
|
|
|
if (kev.key == KEY_SHIFT)
|
|
shift_state = !shift_state;
|
|
|
|
if (kev.key == KEY_ALPHA)
|
|
alpha_state = !alpha_state;
|
|
|
|
if (kev.key == KEY_ACON && shift_state) {
|
|
off_state = 1;
|
|
|
|
dclear(C_BLACK);
|
|
dupdate();
|
|
|
|
shift_state = 0;
|
|
alpha_state = 0;
|
|
|
|
continue;
|
|
}
|
|
|
|
if (kev.key == KEY_MENU && !shift_state && !alpha_state) {
|
|
// TODO: print pause menu
|
|
gint_osmenu();
|
|
}
|
|
|
|
term_scroll_down();
|
|
|
|
char buf[128];
|
|
sprintf(buf, "tick_ctr=%d key=0x%x mod=%d shift=%d alpha=%d\n", tick_ctr, kev.key, kev.mod, kev.shift, kev.alpha);
|
|
tgrid_sets(UNS_TERM_ROWS - 2, 0, C_WHITE, C_BLACK, buf);
|
|
|
|
set_statusbar(tick_ctr, shift_state, alpha_state, get_battery_voltage());
|
|
set_menubar();
|
|
|
|
tgrid_display();
|
|
|
|
tick_ctr++;
|
|
}
|
|
}
|
|
|
|
return 1;
|
|
} |