diff options
author | Lars Henriksen <LarsHenriksen@get2net.dk> | 2018-08-26 14:45:58 +0200 |
---|---|---|
committer | Lukas Fleischer <lfleischer@calcurse.org> | 2018-10-21 20:01:34 +0200 |
commit | 8b39637a628cba915e81f836aad74ec05bf0c285 (patch) | |
tree | 6d4929f1af2a9b564083471f0860fb2c5d043355 /src/calcurse.c | |
parent | d7777ed44e085ee809688379aef96dc05883b2fa (diff) | |
download | calcurse-8b39637a628cba915e81f836aad74ec05bf0c285.tar.gz calcurse-8b39637a628cba915e81f836aad74ec05bf0c285.zip |
Move user information after save/reload to the command level
Moving user information to calcurse.c makes it easier to perform the actual
save/reload operatons in io.c, e.g. it is possible to load instead of
reload after a merge in conflict resolving.
The save/reload operations are of such importance that the user should always be
informed of the result (it's a bit disquieting when there is no reaction to a
save or reload command). Hence, the save/reload status messages are no longer
conditioned by show_dialogs(). No confirmation is asked for, so a message stays
until the status bar is updated by another action.
Care is taken to inform about save/reload actions that result in no change.
Texts are kept concise because of the limited message area. When conflicts are
present, whether saving or reloading, the "continue/merge/cancel" pattern seems
easier to grasp.
Signed-off-by: Lars Henriksen <LarsHenriksen@get2net.dk>
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
Diffstat (limited to 'src/calcurse.c')
-rw-r--r-- | src/calcurse.c | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/src/calcurse.c b/src/calcurse.c index 533f78c..4560e5c 100644 --- a/src/calcurse.c +++ b/src/calcurse.c @@ -271,7 +271,12 @@ static inline void key_generic_help(void) static inline void key_generic_save(void) { - if (io_save_cal(IO_SAVE_DISPLAY_BAR) == IO_SAVE_RELOAD) { + char *msg = NULL; + int ret; + + ret = io_save_cal(IO_SAVE_DISPLAY_BAR); + + if (ret == IO_SAVE_RELOAD) { ui_todo_load_items(); ui_todo_sel_reset(); do_storage(0); @@ -279,11 +284,30 @@ static inline void key_generic_save(void) ui_calendar_monthly_view_cache_set_invalid(); } wins_update(FLAG_ALL); + switch (ret) { + case IO_SAVE_CTINUE: + msg = _("Data were saved successfully"); + break; + case IO_SAVE_RELOAD: + msg = _("Data were saved/reloaded successfully"); + break; + case IO_SAVE_CANCEL: + msg = _("Save cancelled"); + break; + case IO_SAVE_NOOP: + msg = _("Data were already saved"); + break; + } + status_mesg(msg, ""); } static inline void key_generic_reload(void) { - if (io_reload_data()) { + char *msg = NULL; + int ret; + + ret = io_reload_data(); + if (ret != IO_RELOAD_CANCEL && ret != IO_RELOAD_NOOP) { ui_todo_load_items(); ui_todo_sel_reset(); do_storage(0); @@ -291,6 +315,22 @@ static inline void key_generic_reload(void) ui_calendar_monthly_view_cache_set_invalid(); } wins_update(FLAG_ALL); + switch (ret) { + case IO_RELOAD_LOAD: + case IO_RELOAD_CTINUE: + msg = _("Data were reloaded successfully"); + break; + case IO_RELOAD_MERGE: + msg = _("Date were merged/reloaded successfully"); + break; + case IO_RELOAD_CANCEL: + msg = _("Reload cancelled"); + break; + case IO_RELOAD_NOOP: + msg = _("Data were already loaded"); + break; + } + status_mesg(msg, ""); } static inline void key_generic_import(void) |