xref: /freebsd/contrib/bsddialog/examples_library/timebox.c (revision 681ce946f33e75c590e97c53076e86dff1fe8f4a)
1 /*-
2  * SPDX-License-Identifier: CC0-1.0
3  *
4  * Written in 2021 by Alfonso Sabato Siciliano.
5  * To the extent possible under law, the author has dedicated all copyright
6  * and related and neighboring rights to this software to the public domain
7  * worldwide. This software is distributed without any warranty, see:
8  *   <http://creativecommons.org/publicdomain/zero/1.0/>.
9  */
10 
11 #include <stdio.h>
12 #include <string.h>
13 #include <time.h>
14 
15 #include <bsddialog.h>
16 
17 int main()
18 {
19 	int output;
20 	unsigned int hh, mm, ss;
21 	struct bsddialog_conf conf;
22 	time_t clock;
23 	struct tm *localtm;
24 
25 	time(&clock);
26 	localtm = localtime(&clock);
27 	hh = localtm->tm_hour;
28 	mm = localtm->tm_min;
29 	ss = localtm->tm_sec;
30 
31 	bsddialog_initconf(&conf);
32 	conf.title = "timebox";
33 	conf.bottomtitle = "Press TAB and arrows";
34 
35 	if (bsddialog_init() < 0)
36 		return -1;
37 
38 	output = bsddialog_timebox(&conf, "Example", 10, 50, &hh, &mm, &ss);
39 
40 	bsddialog_end();
41 
42 	switch (output) {
43 	case BSDDIALOG_OK:
44 		printf("Time: [%u:%u:%u]\n", hh, mm, ss);
45 		break;
46 	case BSDDIALOG_ESC:
47 		printf("ESC\n");
48 		break;
49 	case BSDDIALOG_CANCEL:
50 		printf("Cancel\n");
51 		break;
52 	case BSDDIALOG_ERROR:
53 		printf("Error: %s\n", bsddialog_geterror());
54 		break;
55 	}
56 
57 	return output;
58 }
59