summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick 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)
commit0c52d3b1404fcb359d91d5757227ad4f3cc73406 (patch)
tree527376cd4555bd4b4267d8149e267f8c197cf4e1
parent2cfd5cc3f2a9615943b798b782b8287b2b1fd3ea (diff)
downloadtimeteller-0c52d3b1404fcb359d91d5757227ad4f3cc73406.zip
timeteller-0c52d3b1404fcb359d91d5757227ad4f3cc73406.tar.gz
timeteller-0c52d3b1404fcb359d91d5757227ad4f3cc73406.tar.bz2
screen_main(): Implement basic event loop
-rw-r--r--src/screen.c28
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;
}