diff options
-rw-r--r-- | src/calcurse.h | 3 | ||||
-rw-r--r-- | src/config.c | 3 | ||||
-rw-r--r-- | src/custom.c | 52 | ||||
-rw-r--r-- | src/day.c | 7 | ||||
-rw-r--r-- | src/ui-day.c | 4 | ||||
-rw-r--r-- | src/vars.c | 3 |
6 files changed, 64 insertions, 8 deletions
diff --git a/src/calcurse.h b/src/calcurse.h index afe4430..3429ee2 100644 --- a/src/calcurse.h +++ b/src/calcurse.h @@ -282,6 +282,9 @@ struct conf { enum win default_panel; unsigned compact_panels; unsigned system_dialogs; + unsigned multiple_days; + unsigned dayseparator; + unsigned empty_appt_line; const char *editor; const char *pager; const char *mergetool; diff --git a/src/config.c b/src/config.c index a6c5e59..1f61f62 100644 --- a/src/config.c +++ b/src/config.c @@ -94,6 +94,8 @@ static const struct confvar confmap[] = { {"appearance.compactpanels", CONFIG_HANDLER_BOOL(conf.compact_panels)}, {"appearance.defaultpanel", config_parse_default_panel, config_serialize_default_panel, NULL}, {"appearance.layout", config_parse_layout, config_serialize_layout, NULL}, + {"appearance.dayseparator", CONFIG_HANDLER_UNSIGNED(conf.dayseparator)}, + {"appearance.emptyline", CONFIG_HANDLER_BOOL(conf.empty_appt_line)}, {"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}, @@ -111,6 +113,7 @@ static const struct confvar confmap[] = { {"general.confirmdelete", CONFIG_HANDLER_BOOL(conf.confirm_delete)}, {"general.confirmquit", CONFIG_HANDLER_BOOL(conf.confirm_quit)}, {"general.firstdayofweek", config_parse_first_day_of_week, config_serialize_first_day_of_week, NULL}, + {"general.multipledays", CONFIG_HANDLER_UNSIGNED(conf.multiple_days)}, {"general.periodicsave", CONFIG_HANDLER_UNSIGNED(conf.periodic_save)}, {"general.systemevents", CONFIG_HANDLER_BOOL(conf.systemevents)}, {"general.systemdialogs", CONFIG_HANDLER_BOOL(conf.system_dialogs)}, diff --git a/src/custom.c b/src/custom.c index f3498b8..b5890cd 100644 --- a/src/custom.c +++ b/src/custom.c @@ -528,6 +528,9 @@ enum { DEFAULT_PANEL, CAL_VIEW, TODO_VIEW, + MULTIPLE_DAYS, + DAYSEPARATOR, + EMPTY_APPT_LINE, AUTO_SAVE, AUTO_GC, PERIODIC_SAVE, @@ -552,6 +555,9 @@ static void print_general_option(int i, WINDOW *win, int y, int hilt, void *cb_d "appearance.defaultpanel = ", "appearance.calendarview = ", "appearance.todoview = ", + "general.multipledays = ", + "appearance.dayseparator = ", + "appearance.emptyline = ", "general.autosave = ", "general.autogc = ", "general.periodicsave = ", @@ -608,6 +614,30 @@ static void print_general_option(int i, WINDOW *win, int y, int hilt, void *cb_d custom_remove_attr(win, ATTR_HIGHEST); mvwaddstr(win, y + 1, XPOS, _("(preferred todo display)")); break; + case DAYSEPARATOR: + custom_apply_attr(win, ATTR_HIGHEST); + mvwprintw(win, y, XPOS + strlen(opt[DAYSEPARATOR]), "%d", + conf.dayseparator); + custom_remove_attr(win, ATTR_HIGHEST); + mvwaddstr(win, y + 1, XPOS, + _("(lines between days in the appointments " + "panel)")); + break; + case EMPTY_APPT_LINE: + print_bool_option_incolor(win, conf.empty_appt_line, y, + XPOS + strlen(opt[EMPTY_APPT_LINE])); + mvwaddstr(win, y + 1, XPOS, + _("(insert an empty line after each appointment)")); + break; + case MULTIPLE_DAYS: + custom_apply_attr(win, ATTR_HIGHEST); + mvwprintw(win, y, XPOS + strlen(opt[MULTIPLE_DAYS]), "%d", + conf.multiple_days); + custom_remove_attr(win, ATTR_HIGHEST); + mvwaddstr(win, y + 1, XPOS, + _("(number of days (1..21) to display in the appointments " + "panel)")); + break; case AUTO_SAVE: print_bool_option_incolor(win, conf.auto_save, y, XPOS + strlen(opt[AUTO_SAVE])); @@ -626,14 +656,15 @@ static void print_general_option(int i, WINDOW *win, int y, int hilt, void *cb_d conf.periodic_save); custom_remove_attr(win, ATTR_HIGHEST); mvwaddstr(win, y + 1, XPOS, - _("(if not null, automatically save data every 'periodic_save' " - "minutes)")); + _("(if not null, automatically save data every " + "'periodic_save' minutes)")); break; case SYSTEM_EVENTS: print_bool_option_incolor(win, conf.systemevents, y, XPOS + strlen(opt[SYSTEM_EVENTS])); mvwaddstr(win, y + 1, XPOS, - _("(if YES, system events are turned into appointments (or else deleted))")); + _("(if YES, system events are turned into " + "appointments (or else deleted))")); break; case CONFIRM_QUIT: print_bool_option_incolor(win, conf.confirm_quit, y, @@ -762,6 +793,21 @@ static void general_option_edit(int i) ui_todo_set_view(conf.todo_view); ui_todo_load_items(); break; + case EMPTY_APPT_LINE: + conf.empty_appt_line = !conf.empty_appt_line; + break; + case MULTIPLE_DAYS: + if (conf.multiple_days == 21) + conf.multiple_days = 1; + else + conf.multiple_days++; + break; + case DAYSEPARATOR: + if (conf.dayseparator == 2) + conf.dayseparator = 0; + else + conf.dayseparator++; + break; case HEADING_POS: if (conf.heading_pos == RIGHT) conf.heading_pos = LEFT; @@ -42,7 +42,6 @@ #include "calcurse.h" -static unsigned day_days = 5; static vector_t day_items; static unsigned day_items_nb = 0; @@ -109,7 +108,7 @@ int day_sel_index(void) int day_get_days(void) { - return day_days; + return conf.multiple_days; } static void day_free(struct day_item *day) @@ -462,8 +461,8 @@ day_store_items(time_t date, int include_captions, int n) } if (include_captions) { - /* Two empty lines between days. */ - if (apts == 0) + /* Empty line at end of day if appointments have one. */ + if (apts == 0 && conf.empty_appt_line) day_add_item(EMPTY_SEPARATOR, 0, ENDOFDAY(date), p); day_add_item(DAY_SEPARATOR, 0, ENDOFDAY(date), p); } diff --git a/src/ui-day.c b/src/ui-day.c index ab4e7d9..f7fddef 100644 --- a/src/ui-day.c +++ b/src/ui-day.c @@ -1144,7 +1144,9 @@ int ui_day_height(int n, void *cb_data) if (item->type == APPT || item->type == RECUR_APPT) - return 3; + return conf.empty_appt_line ? 3 : 2; + else if (item->type == DAY_SEPARATOR) + return conf.dayseparator; else return 1; } @@ -122,6 +122,9 @@ void vars_init(void) /* Variables for user configuration */ conf.cal_view = CAL_MONTH_VIEW; conf.todo_view = TODO_HIDE_COMPLETED_VIEW; + conf.empty_appt_line = 1; + conf.multiple_days = 7; + conf.dayseparator = 2; conf.confirm_quit = 1; conf.confirm_delete = 1; conf.auto_save = 1; |