summaryrefslogtreecommitdiff
path: root/src/calcurse.c
diff options
context:
space:
mode:
authorFrederic Culot <calcurse@culot.org>2008-04-12 21:14:03 +0000
committerFrederic Culot <calcurse@culot.org>2008-04-12 21:14:03 +0000
commitefd782699b63038a36bf68eaa1230d2d10bd9b38 (patch)
treea8bf286c6aa9bbfc12192cefed63a98567a3f010 /src/calcurse.c
parent0c281d2c1e53248f0075f988fb4ba02f041bd170 (diff)
downloadcalcurse-efd782699b63038a36bf68eaa1230d2d10bd9b38.zip
Yet another style for source code. GNU style now used (I am fed up with tabs...)
Diffstat (limited to 'src/calcurse.c')
-rwxr-xr-xsrc/calcurse.c870
1 files changed, 445 insertions, 425 deletions
diff --git a/src/calcurse.c b/src/calcurse.c
index 4e7acb7..2c814f0 100755
--- a/src/calcurse.c
+++ b/src/calcurse.c
@@ -1,4 +1,4 @@
-/* $calcurse: calcurse.c,v 1.61 2008/04/09 20:38:29 culot Exp $ */
+/* $calcurse: calcurse.c,v 1.62 2008/04/12 21:14:03 culot Exp $ */
/*
* Calcurse - text-based organizer
@@ -44,446 +44,466 @@
/*
- * Calcurse is a text-based personal organizer which helps keeping track
+ * Calcurse is a text-based personal organizer which helps keeping track
* of events and everyday tasks. It contains a calendar, a 'todo' list,
* and puts your appointments in order. The user interface is configurable,
* and one can choose between different color schemes and layouts.
* All of the commands are documented within an online help system.
*/
-int
-main(int argc, char **argv)
+int
+main (int argc, char **argv)
{
- conf_t conf;
- day_items_nb_t inday;
- int ch, background, foreground;
- int non_interactive;
- int no_data_file = 1;
- int sav_hilt_app = 0;
- int sav_hilt_tod = 0;
- struct sigaction sigact;
- bool do_storage = false;
- bool do_update = true;
- bool day_changed = false;
- char *no_color_support =
- _("Sorry, colors are not supported by your terminal\n"
- "(Press [ENTER] to continue)");
- char *quit_message = _("Do you really want to quit ?");
- char choices[] = "[y/n] ";
+ conf_t conf;
+ day_items_nb_t inday;
+ int ch, background, foreground;
+ int non_interactive;
+ int no_data_file = 1;
+ int sav_hilt_app = 0;
+ int sav_hilt_tod = 0;
+ struct sigaction sigact;
+ bool do_storage = false;
+ bool do_update = true;
+ bool day_changed = false;
+ char *no_color_support =
+ _("Sorry, colors are not supported by your terminal\n"
+ "(Press [ENTER] to continue)");
+ char *quit_message = _("Do you really want to quit ?");
+ char choices[] = "[y/n] ";
#if ENABLE_NLS
- setlocale (LC_ALL, "");
- bindtextdomain (PACKAGE, LOCALEDIR);
- textdomain (PACKAGE);
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
#endif /* ENABLE_NLS */
-
- /* Thread-safe data structure init */
- apoint_llist_init();
- recur_apoint_llist_init();
-
- /*
- * Begin by parsing and handling command line arguments.
- * The data path is also initialized here.
- */
- non_interactive = parse_args(argc, argv, &conf);
- if (non_interactive)
- return (EXIT_SUCCESS);
-
- /* Begin of interactive mode with ncurses interface. */
- sigs_init(&sigact); /* signal handling init */
- initscr(); /* start the curses mode */
- cbreak(); /* control chars generate a signal */
- noecho(); /* controls echoing of typed chars */
- curs_set(0); /* make cursor invisible */
- calendar_set_current_date();
- notify_init_vars();
- wins_get_config();
-
- /* Check if terminal supports color. */
- if (has_colors()) {
- colorize = true;
- background = COLOR_BLACK;
- foreground = COLOR_WHITE;
- start_color();
-#ifdef NCURSES_VERSION
- if (use_default_colors() != ERR) {
- background = -1;
- foreground = -1;
- }
-#endif /* NCURSES_VERSION */
+ /* Thread-safe data structure init */
+ apoint_llist_init ();
+ recur_apoint_llist_init ();
+
+ /*
+ * Begin by parsing and handling command line arguments.
+ * The data path is also initialized here.
+ */
+ non_interactive = parse_args (argc, argv, &conf);
+ if (non_interactive)
+ return (EXIT_SUCCESS);
+
+ /* Begin of interactive mode with ncurses interface. */
+ sigs_init (&sigact); /* signal handling init */
+ initscr (); /* start the curses mode */
+ cbreak (); /* control chars generate a signal */
+ noecho (); /* controls echoing of typed chars */
+ curs_set (0); /* make cursor invisible */
+ calendar_set_current_date ();
+ notify_init_vars ();
+ wins_get_config ();
+
+ /* Check if terminal supports color. */
+ if (has_colors ())
+ {
+ colorize = true;
+ background = COLOR_BLACK;
+ foreground = COLOR_WHITE;
+ start_color ();
- /* Color assignment */
- init_pair(COLR_RED, COLOR_RED, background);
- init_pair(COLR_GREEN, COLOR_GREEN, background);
- init_pair(COLR_YELLOW, COLOR_YELLOW, background);
- init_pair(COLR_BLUE, COLOR_BLUE, background);
- init_pair(COLR_MAGENTA, COLOR_MAGENTA, background);
- init_pair(COLR_CYAN, COLOR_CYAN, background);
- init_pair(COLR_DEFAULT, foreground, background);
- init_pair(COLR_HIGH, COLOR_BLACK, COLOR_GREEN);
- init_pair(COLR_CUSTOM, COLOR_RED, background);
-
- } else {
- colorize = false;
- background = COLOR_BLACK;
+#ifdef NCURSES_VERSION
+ if (use_default_colors () != ERR)
+ {
+ background = -1;
+ foreground = -1;
}
+#endif /* NCURSES_VERSION */
- vars_init(&conf);
- wins_init();
- wins_slctd_init();
- notify_init_bar();
- reset_status_page();
-
- /*
- * Read the data from files : first the user
- * configuration (the display is then updated), and then
- * the todo list, appointments and events.
- */
- no_data_file = io_check_data_files();
- custom_load_conf(&conf, background);
- erase_status_bar();
- io_load_todo();
- io_load_app();
- wins_reinit();
- if (notify_bar()) {
- notify_start_main_thread();
- notify_check_next_app();
- }
- wins_update();
- io_startup_screen(conf.skip_system_dialogs, no_data_file);
- inday = *day_process_storage(0, day_changed, &inday);
- wins_slctd_set(CAL);
- wins_update();
- calendar_start_date_thread();
-
- /* User input */
- for (;;) {
-
- do_update = true;
- ch = wgetch(win[STA].p);
-
- switch (ch) {
-
- case ERR:
- do_update = false;
- break;
-
- case CTRL('R'):
- case KEY_RESIZE:
- do_update = false;
- wins_reset();
- break;
-
- case 9: /* The TAB key was hit. */
- reset_status_page();
- /* Save previously highlighted event. */
- switch (wins_slctd()) {
- case TOD:
- sav_hilt_tod = todo_hilt();
- todo_hilt_set(0);
- break;
- case APP:
- sav_hilt_app = apoint_hilt();
- apoint_hilt_set(0);
- break;
- default:
- break;
- }
- wins_slctd_next();
-
- /* Select the event to highlight. */
- switch (wins_slctd()) {
- case TOD:
- if ((sav_hilt_tod == 0) && (todo_nb() != 0))
- todo_hilt_set(1);
- else
- todo_hilt_set(sav_hilt_tod);
- break;
- case APP:
- if ((sav_hilt_app == 0) &&
- ((inday.nb_events + inday.nb_apoints) != 0))
- apoint_hilt_set(1);
- else
- apoint_hilt_set(sav_hilt_app);
- break;
- default:
- break;
- }
- break;
-
- case 'O':
- case 'o':
- other_status_page(wins_slctd());
- break;
-
- case 'G':
- case 'g': /* Goto function */
- erase_status_bar();
- calendar_set_current_date();
- calendar_change_day(conf.input_datefmt);
- do_storage = true;
- day_changed = true;
- break;
-
- case 'V':
- case 'v': /* View function */
- if ((wins_slctd() == APP) && (apoint_hilt() != 0))
- day_popup_item();
- else if ((wins_slctd() == TOD) && (todo_hilt() != 0))
- item_in_popup(NULL, NULL, todo_saved_mesg(),
- _("To do :"));
- break;
-
+ /* Color assignment */
+ init_pair (COLR_RED, COLOR_RED, background);
+ init_pair (COLR_GREEN, COLOR_GREEN, background);
+ init_pair (COLR_YELLOW, COLOR_YELLOW, background);
+ init_pair (COLR_BLUE, COLOR_BLUE, background);
+ init_pair (COLR_MAGENTA, COLOR_MAGENTA, background);
+ init_pair (COLR_CYAN, COLOR_CYAN, background);
+ init_pair (COLR_DEFAULT, foreground, background);
+ init_pair (COLR_HIGH, COLOR_BLACK, COLOR_GREEN);
+ init_pair (COLR_CUSTOM, COLOR_RED, background);
+
+ }
+ else
+ {
+ colorize = false;
+ background = COLOR_BLACK;
+ }
+
+ vars_init (&conf);
+ wins_init ();
+ wins_slctd_init ();
+ notify_init_bar ();
+ reset_status_page ();
+
+ /*
+ * Read the data from files : first the user
+ * configuration (the display is then updated), and then
+ * the todo list, appointments and events.
+ */
+ no_data_file = io_check_data_files ();
+ custom_load_conf (&conf, background);
+ erase_status_bar ();
+ io_load_todo ();
+ io_load_app ();
+ wins_reinit ();
+ if (notify_bar ())
+ {
+ notify_start_main_thread ();
+ notify_check_next_app ();
+ }
+ wins_update ();
+ io_startup_screen (conf.skip_system_dialogs, no_data_file);
+ inday = *day_process_storage (0, day_changed, &inday);
+ wins_slctd_set (CAL);
+ wins_update ();
+ calendar_start_date_thread ();
+
+ /* User input */
+ for (;;)
+ {
+ do_update = true;
+ ch = wgetch (win[STA].p);
+ switch (ch)
+ {
+ case ERR:
+ do_update = false;
+ break;
+
+ case CTRL ('R'):
+ case KEY_RESIZE:
+ do_update = false;
+ wins_reset ();
+ break;
+
+ case 9: /* The TAB key was hit. */
+ reset_status_page ();
+ /* Save previously highlighted event. */
+ switch (wins_slctd ())
+ {
+ case TOD:
+ sav_hilt_tod = todo_hilt ();
+ todo_hilt_set (0);
+ break;
+ case APP:
+ sav_hilt_app = apoint_hilt ();
+ apoint_hilt_set (0);
+ break;
+ default:
+ break;
+ }
+ wins_slctd_next ();
+
+ /* Select the event to highlight. */
+ switch (wins_slctd ())
+ {
+ case TOD:
+ if ((sav_hilt_tod == 0) && (todo_nb () != 0))
+ todo_hilt_set (1);
+ else
+ todo_hilt_set (sav_hilt_tod);
+ break;
+ case APP:
+ if ((sav_hilt_app == 0)
+ && ((inday.nb_events + inday.nb_apoints) != 0))
+ apoint_hilt_set (1);
+ else
+ apoint_hilt_set (sav_hilt_app);
+ break;
+ default:
+ break;
+ }
+ break;
+
+ case 'O':
+ case 'o':
+ other_status_page (wins_slctd ());
+ break;
+
+ case 'G':
+ case 'g': /* Goto function */
+ erase_status_bar ();
+ calendar_set_current_date ();
+ calendar_change_day (conf.input_datefmt);
+ do_storage = true;
+ day_changed = true;
+ break;
+
+ case 'V':
+ case 'v': /* View function */
+ if ((wins_slctd () == APP) && (apoint_hilt () != 0))
+ day_popup_item ();
+ else if ((wins_slctd () == TOD) && (todo_hilt () != 0))
+ item_in_popup (NULL, NULL, todo_saved_mesg (), _("To do :"));
+ break;
+
+ case 'C':
+ case 'c': /* Configuration menu */
+ erase_status_bar ();
+ config_bar ();
+ while ((ch = wgetch (win[STA].p)) != 'q')
+ {
+ switch (ch)
+ {
case 'C':
- case 'c': /* Configuration menu */
- erase_status_bar();
- config_bar();
- while ((ch = wgetch(win[STA].p)) != 'q') {
- switch (ch) {
- case 'C':
- case 'c':
- if (has_colors())
- custom_color_config();
- else {
- colorize = false;
- erase_status_bar();
- mvwprintw(win[STA].p, 0, 0,
- _(no_color_support));
- wgetch(win[STA].p);
- }
- break;
- case 'L':
- case 'l':
- layout_config();
- break;
- case 'G':
- case 'g':
- custom_general_config(&conf);
- break;
- case 'N':
- case 'n':
- notify_config_bar();
- break;
- }
- wins_reset();
- wins_update();
- do_storage = true;
- erase_status_bar();
- config_bar();
- }
- wins_update();
- break;
-
- case CTRL('A'): /* Add an app, whatever panel selected */
- apoint_add();
- do_storage = true;
- break;
-
- case CTRL('T'): /* Add a todo, whatever panel selected */
- todo_new_item();
- if (todo_hilt() == 0 && todo_nb() == 1)
- todo_hilt_increase();
- break;
-
- case 'A':
- case 'a': /* Add an item */
- switch (wins_slctd()) {
- case APP:
- apoint_add();
- do_storage = true;
- break;
- case TOD:
- todo_new_item();
- if (todo_hilt() == 0 && todo_nb() == 1)
- todo_hilt_increase();
- break;
- default:
- break;
- }
- break;
-
- case 'E':
- case 'e': /* Edit an existing item */
- if (wins_slctd() == APP && apoint_hilt() != 0)
- day_edit_item(&conf);
- else if (wins_slctd() == TOD && todo_hilt() != 0)
- todo_edit_item();
- do_storage = true;
- break;
-
- case 'D':
- case 'd': /* Delete an item */
- if (wins_slctd() == APP && apoint_hilt() != 0)
- apoint_delete(&conf, &inday.nb_events,
- &inday.nb_apoints);
- else if (wins_slctd() == TOD && todo_hilt() != 0)
- todo_delete(&conf);
- do_storage = true;
- break;
-
- case 'R':
- case 'r':
- if (wins_slctd() == APP && apoint_hilt() != 0)
- recur_repeat_item(&conf);
- do_storage = true;
- break;
-
- case '!':
- if (wins_slctd() == APP && apoint_hilt() != 0)
- apoint_switch_notify();
- do_storage = true;
- break;
-
- case '+':
- case '-':
- if (wins_slctd() == TOD && todo_hilt() != 0) {
- todo_chg_priority(ch);
- if (todo_hilt_pos() < 0)
- todo_set_first(todo_hilt());
- else if (todo_hilt_pos() >= win[TOD].h - 4)
- todo_set_first(todo_hilt() -
- win[TOD].h + 5);
- }
- break;
-
+ case 'c':
+ if (has_colors ())
+ custom_color_config ();
+ else
+ {
+ colorize = false;
+ erase_status_bar ();
+ mvwprintw (win[STA].p, 0, 0, _(no_color_support));
+ wgetch (win[STA].p);
+ }
+ break;
+ case 'L':
+ case 'l':
+ layout_config ();
+ break;
+ case 'G':
+ case 'g':
+ custom_general_config (&conf);
+ break;
case 'N':
- case 'n':
- /* Attach a note to an item, create it if necessary */
- if (wins_slctd() == APP && apoint_hilt() != 0)
- day_edit_note(conf.editor);
- else if (wins_slctd() == TOD && todo_hilt() != 0)
- todo_edit_note(conf.editor);
- do_storage = true;
- break;
-
- case '>':
- /* View a note previously attached to an item */
- if (wins_slctd() == APP && apoint_hilt() != 0)
- day_view_note(conf.pager);
- else if (wins_slctd() == TOD && todo_hilt() != 0)
- todo_view_note(conf.pager);
- break;
-
- case '?': /* Online help system */
- status_bar();
- help_screen();
- break;
-
- case 'S':
- case 's': /* Save function */
- io_save_cal(&conf);
- break;
-
- case 'X':
- case 'x': /* Export function */
- io_export_data(IO_EXPORT_INTERACTIVE, &conf);
- break;
-
- case (261): /* right arrow */
- case ('L'):
- case ('l'):
- case CTRL('L'):
- if (wins_slctd() == CAL || ch == CTRL('L')) {
- do_storage = true;
- day_changed = true;
- calendar_move(RIGHT);
- }
- break;
-
- case (260): /* left arrow */
- case ('H'):
- case ('h'):
- case CTRL('H'):
- if (wins_slctd() == CAL || ch == CTRL('H')) {
- do_storage = true;
- day_changed = true;
- calendar_move(LEFT);
- }
- break;
-
- case (259): /* up arrow */
- case ('K'):
- case ('k'):
- case CTRL('K'):
- if (wins_slctd() == CAL || ch == CTRL('K')) {
- do_storage = true;
- day_changed = true;
- calendar_move(UP);
- } else {
- if ((wins_slctd() == APP) &&
- (apoint_hilt() > 1)) {
- apoint_hilt_decrease();
- apoint_scroll_pad_up(inday.nb_events);
- } else if ((wins_slctd() == TOD) &&
- (todo_hilt() > 1)) {
- todo_hilt_decrease();
- if (todo_hilt_pos() < 0)
- todo_first_decrease();
- }
- }
- break;
-
- case (258): /* down arrow */
- case ('J'):
- case ('j'):
- case CTRL('J'):
- if (wins_slctd() == CAL || ch == CTRL('J')) {
- do_storage = true;
- day_changed = true;
- calendar_move(DOWN);
- } else {
- if ((wins_slctd() == APP) &&
- (apoint_hilt() < inday.nb_events +
- inday.nb_apoints)) {
- apoint_hilt_increase();
- apoint_scroll_pad_down(inday.nb_events,
- win[APP].h);
- }
- if ((wins_slctd() == TOD) &&
- (todo_hilt() < todo_nb())) {
- todo_hilt_increase();
- if (todo_hilt_pos() == win[TOD].h - 4)
- todo_first_increase();
- }
- }
- break;
-
- case ('Q'): /* Quit calcurse :( */
- case ('q'):
- if (conf.auto_save)
- io_save_cal(&conf);
-
- if (conf.confirm_quit) {
- status_mesg(_(quit_message), choices);
- ch = wgetch(win[STA].p);
- if ( ch == 'y' )
- exit_calcurse(EXIT_SUCCESS);
- else {
- erase_status_bar();
- break;
- }
- } else
- exit_calcurse(EXIT_SUCCESS);
- break;
-
- default:
- do_update = false;
- break;
+ case 'n':
+ notify_config_bar ();
+ break;
}
-
- if (do_storage) {
- inday = *day_process_storage(calendar_get_slctd_day(),
- day_changed, &inday);
- do_storage = !do_storage;
- if (day_changed) {
- sav_hilt_app = 0;
- day_changed = !day_changed;
- if ((wins_slctd() == APP) &&
- (inday.nb_events + inday.nb_apoints != 0))
- apoint_hilt_set(1);
- }
+ wins_reset ();
+ wins_update ();
+ do_storage = true;
+ erase_status_bar ();
+ config_bar ();
+ }
+ wins_update ();
+ break;
+
+ case CTRL ('A'): /* Add an app, whatever panel selected */
+ apoint_add ();
+ do_storage = true;
+ break;
+
+ case CTRL ('T'): /* Add a todo, whatever panel selected */
+ todo_new_item ();
+ if (todo_hilt () == 0 && todo_nb () == 1)
+ todo_hilt_increase ();
+ break;
+
+ case 'A':
+ case 'a': /* Add an item */
+ switch (wins_slctd ())
+ {
+ case APP:
+ apoint_add ();
+ do_storage = true;
+ break;
+ case TOD:
+ todo_new_item ();
+ if (todo_hilt () == 0 && todo_nb () == 1)
+ todo_hilt_increase ();
+ break;
+ default:
+ break;
+ }
+ break;
+
+ case 'E':
+ case 'e': /* Edit an existing item */
+ if (wins_slctd () == APP && apoint_hilt () != 0)
+ day_edit_item (&conf);
+ else if (wins_slctd () == TOD && todo_hilt () != 0)
+ todo_edit_item ();
+ do_storage = true;
+ break;
+
+ case 'D':
+ case 'd': /* Delete an item */
+ if (wins_slctd () == APP && apoint_hilt () != 0)
+ apoint_delete (&conf, &inday.nb_events, &inday.nb_apoints);
+ else if (wins_slctd () == TOD && todo_hilt () != 0)
+ todo_delete (&conf);
+ do_storage = true;
+ break;
+
+ case 'R':
+ case 'r':
+ if (wins_slctd () == APP && apoint_hilt () != 0)
+ recur_repeat_item (&conf);
+ do_storage = true;
+ break;
+
+ case '!':
+ if (wins_slctd () == APP && apoint_hilt () != 0)
+ apoint_switch_notify ();
+ do_storage = true;
+ break;
+
+ case '+':
+ case '-':
+ if (wins_slctd () == TOD && todo_hilt () != 0)
+ {
+ todo_chg_priority (ch);
+ if (todo_hilt_pos () < 0)
+ todo_set_first (todo_hilt ());
+ else if (todo_hilt_pos () >= win[TOD].h - 4)
+ todo_set_first (todo_hilt () - win[TOD].h + 5);
+ }
+ break;
+
+ case 'N':
+ case 'n':
+ /* Attach a note to an item, create it if necessary */
+ if (wins_slctd () == APP && apoint_hilt () != 0)
+ day_edit_note (conf.editor);
+ else if (wins_slctd () == TOD && todo_hilt () != 0)
+ todo_edit_note (conf.editor);
+ do_storage = true;
+ break;
+
+ case '>':
+ /* View a note previously attached to an item */
+ if (wins_slctd () == APP && apoint_hilt () != 0)
+ day_view_note (conf.pager);
+ else if (wins_slctd () == TOD && todo_hilt () != 0)
+ todo_view_note (conf.pager);
+ break;
+
+ case '?': /* Online help system */
+ status_bar ();
+ help_screen ();
+ break;
+
+ case 'S':
+ case 's': /* Save function */
+ io_save_cal (&conf);
+ break;
+
+ case 'X':
+ case 'x': /* Export function */
+ io_export_data (IO_EXPORT_INTERACTIVE, &conf);
+ break;
+
+ case (261): /* right arrow */
+ case ('L'):
+ case ('l'):
+ case CTRL ('L'):
+ if (wins_slctd () == CAL || ch == CTRL ('L'))
+ {
+ do_storage = true;
+ day_changed = true;
+ calendar_move (RIGHT);
+ }
+ break;
+
+ case (260): /* left arrow */
+ case ('H'):
+ case ('h'):
+ case CTRL ('H'):
+ if (wins_slctd () == CAL || ch == CTRL ('H'))
+ {
+ do_storage = true;
+ day_changed = true;
+ calendar_move (LEFT);
+ }
+ break;
+
+ case (259): /* up arrow */
+ case ('K'):
+ case ('k'):
+ case CTRL ('K'):
+ if (wins_slctd () == CAL || ch == CTRL ('K'))
+ {
+ do_storage = true;
+ day_changed = true;
+ calendar_move (UP);
+ }
+ else
+ {
+ if ((wins_slctd () == APP) && (apoint_hilt () > 1))
+ {
+ apoint_hilt_decrease ();
+ apoint_scroll_pad_up (inday.nb_events);
+ }
+ else if ((wins_slctd () == TOD) && (todo_hilt () > 1))
+ {
+ todo_hilt_decrease ();
+ if (todo_hilt_pos () < 0)
+ todo_first_decrease ();
+ }
+ }
+ break;
+
+ case (258): /* down arrow */
+ case ('J'):
+ case ('j'):
+ case CTRL ('J'):
+ if (wins_slctd () == CAL || ch == CTRL ('J'))
+ {
+ do_storage = true;
+ day_changed = true;
+ calendar_move (DOWN);
+ }
+ else
+ {
+ if ((wins_slctd () == APP) &&
+ (apoint_hilt () < inday.nb_events + inday.nb_apoints))
+ {
+ apoint_hilt_increase ();
+ apoint_scroll_pad_down (inday.nb_events, win[APP].h);
}
- if (do_update)
- wins_update();
+ if ((wins_slctd () == TOD) && (todo_hilt () < todo_nb ()))
+ {
+ todo_hilt_increase ();
+ if (todo_hilt_pos () == win[TOD].h - 4)
+ todo_first_increase ();
+ }
+ }
+ break;
+
+ case ('Q'): /* Quit calcurse :( */
+ case ('q'):
+ if (conf.auto_save)
+ io_save_cal (&conf);
+
+ if (conf.confirm_quit)
+ {
+ status_mesg (_(quit_message), choices);
+ ch = wgetch (win[STA].p);
+ if (ch == 'y')
+ exit_calcurse (EXIT_SUCCESS);
+ else
+ {
+ erase_status_bar ();
+ break;
+ }
+ }
+ else
+ exit_calcurse (EXIT_SUCCESS);
+ break;
+
+ default:
+ do_update = false;
+ break;
+ }
+
+ if (do_storage)
+ {
+ inday = *day_process_storage (calendar_get_slctd_day (),
+ day_changed, &inday);
+ do_storage = !do_storage;
+ if (day_changed)
+ {
+ sav_hilt_app = 0;
+ day_changed = !day_changed;
+ if ((wins_slctd () == APP) &&
+ (inday.nb_events + inday.nb_apoints != 0))
+ apoint_hilt_set (1);
+ }
}
+ if (do_update)
+ wins_update ();
+ }
}