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