From d8d7dce2b8efe64b16e6a5acbcc183cf1be92c59 Mon Sep 17 00:00:00 2001
From: Lars Henriksen <LarsHenriksen@get2net.dk>
Date: Tue, 17 Sep 2019 22:40:49 +0200
Subject: Make the text for empty days configurable

The default is "--"; a single space makes the text invisible.

Signed-off-by: Lars Henriksen <LarsHenriksen@get2net.dk>
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
---
 src/calcurse.h |  3 +++
 src/config.c   |  1 +
 src/custom.c   | 21 +++++++++++++++++++++
 src/day.c      |  2 +-
 src/vars.c     |  1 +
 5 files changed, 27 insertions(+), 1 deletion(-)

(limited to 'src')

diff --git a/src/calcurse.h b/src/calcurse.h
index 98b1f71..39f46b7 100644
--- a/src/calcurse.h
+++ b/src/calcurse.h
@@ -287,6 +287,7 @@ struct conf {
 	unsigned event_separator;
 	unsigned day_separator;
 	unsigned empty_appt_line;
+	char empty_day[BUFSIZ];
 	const char *editor;
 	const char *pager;
 	const char *mergetool;
@@ -296,6 +297,8 @@ struct conf {
 	char day_heading[BUFSIZ];	/* format for displaying heading in appts panel */
 };
 
+#define EMPTY_DAY_DEFAULT "--"
+
 /* Daemon-related configuration. */
 struct dmon_conf {
 	unsigned enable;	/* launch daemon automatically when exiting */
diff --git a/src/config.c b/src/config.c
index 511ea80..c6914f5 100644
--- a/src/config.c
+++ b/src/config.c
@@ -98,6 +98,7 @@ static const struct confvar confmap[] = {
 	{"appearance.eventseparator", CONFIG_HANDLER_BOOL(conf.event_separator)},
 	{"appearance.dayseparator", CONFIG_HANDLER_BOOL(conf.day_separator)},
 	{"appearance.emptyline", CONFIG_HANDLER_BOOL(conf.empty_appt_line)},
+	{"appearance.emptyday", CONFIG_HANDLER_STR(conf.empty_day)},
 	{"appearance.notifybar", CONFIG_HANDLER_BOOL(nbar.show)},
 	{"appearance.sidebarwidth", config_parse_sidebar_width, config_serialize_sidebar_width, NULL},
 	{"appearance.theme", config_parse_color_theme, config_serialize_color_theme, NULL},
diff --git a/src/custom.c b/src/custom.c
index 3fc3a2a..dafb801 100644
--- a/src/custom.c
+++ b/src/custom.c
@@ -533,6 +533,7 @@ enum {
 	EVENT_SEPARATOR,
 	DAY_SEPARATOR,
 	EMPTY_APPT_LINE,
+	EMPTY_DAY,
 	AUTO_SAVE,
 	AUTO_GC,
 	PERIODIC_SAVE,
@@ -562,6 +563,7 @@ static void print_general_option(int i, WINDOW *win, int y, int hilt, void *cb_d
 		"appearance.eventseparator = ",
 		"appearance.dayseparator = ",
 		"appearance.emptyline = ",
+		"appearance.emptyday = ",
 		"general.autosave = ",
 		"general.autogc = ",
 		"general.periodicsave = ",
@@ -642,6 +644,14 @@ static void print_general_option(int i, WINDOW *win, int y, int hilt, void *cb_d
 		mvwaddstr(win, y + 1, XPOS,
 			  _("(insert an empty line after each appointment)"));
 		break;
+	case EMPTY_DAY:
+		custom_apply_attr(win, ATTR_HIGHEST);
+		mvwaddstr(win, y, XPOS + strlen(opt[EMPTY_DAY]),
+			  conf.empty_day);
+		custom_remove_attr(win, ATTR_HIGHEST);
+		mvwaddstr(win, y + 1, XPOS,
+			  _("(text for a day without events and appointments)"));
+		break;
 	case MULTIPLE_DAYS:
 		print_bool_option_incolor(win, conf.multiple_days, y,
 					  XPOS + strlen(opt[MULTIPLE_DAYS]));
@@ -766,6 +776,8 @@ static int general_option_height(int i, void *cb_data)
 
 static void general_option_edit(int i)
 {
+	const char *empty_day_str =
+	    _("Enter a text string (an empty string for the default text)");
 	const char *output_datefmt_str =
 	    _("Enter the date format (see 'man 3 strftime' for possible formats) ");
 	const char *input_datefmt_prefix = _("Enter the date format: ");
@@ -818,6 +830,15 @@ static void general_option_edit(int i)
 	case EMPTY_APPT_LINE:
 		conf.empty_appt_line = !conf.empty_appt_line;
 		break;
+	case EMPTY_DAY:
+		status_mesg(empty_day_str, "");
+		strcpy(buf, conf.empty_day);
+		val = getstring(win[STA].p, buf, 80, 0, 1);
+		if (val == GETSTRING_VALID)
+			strcpy(conf.empty_day, buf);
+		else if (val == GETSTRING_RET)
+			strcpy(conf.empty_day, EMPTY_DAY_DEFAULT);
+		break;
 	case HEADING_POS:
 		if (conf.heading_pos == RIGHT)
 			conf.heading_pos = LEFT;
diff --git a/src/day.c b/src/day.c
index 95b61b5..a8ee736 100644
--- a/src/day.c
+++ b/src/day.c
@@ -471,7 +471,7 @@ day_store_items(time_t date, int include_captions, int n)
 		if (include_captions && events == 0 && apts == 0) {
 			/* Insert dummy event. */
 			d.ev = &dummy;
-			dummy.mesg = _("(none)");
+			dummy.mesg = conf.empty_day;
 			day_add_item(EVNT, DUMMY, date, d);
 			day_items_nb++;
 		}
diff --git a/src/vars.c b/src/vars.c
index ce6caf8..ae690d1 100644
--- a/src/vars.c
+++ b/src/vars.c
@@ -127,6 +127,7 @@ void vars_init(void)
 	conf.event_separator = 1;
 	conf.day_separator = 1;
 	conf.empty_appt_line = 1;
+	strcpy(conf.empty_day, EMPTY_DAY_DEFAULT);
 	conf.confirm_quit = 1;
 	conf.confirm_delete = 1;
 	conf.auto_save = 1;
-- 
cgit v1.2.3-70-g09d2