diff options
author | Patrick McDermott <patrick.mcdermott@libiquity.com> | 2019-10-13 21:28:18 (EDT) |
---|---|---|
committer | Patrick McDermott <patrick.mcdermott@libiquity.com> | 2019-10-13 21:28:18 (EDT) |
commit | 0c52d3b1404fcb359d91d5757227ad4f3cc73406 (patch) | |
tree | 527376cd4555bd4b4267d8149e267f8c197cf4e1 | |
parent | 2cfd5cc3f2a9615943b798b782b8287b2b1fd3ea (diff) | |
download | timeteller-0c52d3b1404fcb359d91d5757227ad4f3cc73406.zip timeteller-0c52d3b1404fcb359d91d5757227ad4f3cc73406.tar.gz timeteller-0c52d3b1404fcb359d91d5757227ad4f3cc73406.tar.bz2 |
screen_main(): Implement basic event loop
-rw-r--r-- | src/screen.c | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/src/screen.c b/src/screen.c index 762b0bb..771e6b1 100644 --- a/src/screen.c +++ b/src/screen.c @@ -25,6 +25,7 @@ #include <curses.h> #include <stdbool.h> #include <stdlib.h> +#include <unistd.h> #include "clock.h" #include "speech.h" @@ -63,14 +64,31 @@ screen_new(void) bool screen_main(struct screen *screen, struct speech *speech) { + bool play; + assert(screen); assert(speech); - clock_draw(screen->clock); - - refresh(); - - speech_play_time(speech); + for (;;) { + switch (wgetch(screen->win)) { + case ERR: + break; + case 'q': + return true; + default: + play = true; + } + + clock_draw(screen->clock); + refresh(); + + if (play) { + speech_play_time(speech); + play = false; + } else { + sleep(1); + } + } return true; } |