diff options
author | Lars Henriksen <LarsHenriksen@get2net.dk> | 2019-04-08 07:52:57 +0200 |
---|---|---|
committer | Lukas Fleischer <lfleischer@calcurse.org> | 2019-04-13 11:58:04 +0200 |
commit | 371c7eb00f44f80cd87f3dcd72f39b62ca1d3f31 (patch) | |
tree | 602d379f439b0eb5d28cacf7e45428696733d8a1 | |
parent | c8d53972148e7713e40779e75c1932cacffd526c (diff) | |
download | calcurse-371c7eb00f44f80cd87f3dcd72f39b62ca1d3f31.tar.gz calcurse-371c7eb00f44f80cd87f3dcd72f39b62ca1d3f31.zip |
Fix display of time left before next appointment
In the notify bar, the clock is shown in hours, minutes and seconds,
whereas the time left to the next appointment is shown in hours and
minutes only. When you read the clock in hours and minutes (discarding
the seconds), you are mentally rounding down to the nearest minute. To
agree with that reading, the time left (in seconds) should be
(programmatically) rounded up to the nearest minute for display.
In that way the time left is counted down whenever the minute "hand" of
the clock "ticks", and reaches zero when the clock reaches the time of
the next appointment, not one minute before. Also, the clock (in hours
and minutes) and the time left always add up to the time of the next
appointment.
Signed-off-by: Lars Henriksen <LarsHenriksen@get2net.dk>
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
-rw-r--r-- | src/args.c | 7 | ||||
-rw-r--r-- | src/notify.c | 12 |
2 files changed, 12 insertions, 7 deletions
@@ -236,8 +236,11 @@ static void next_arg(void) if (next_app.got_app) { time_left = next_app.time - current_time; - hours_left = (time_left / HOURINSEC); - min_left = (time_left - hours_left * HOURINSEC) / MININSEC; + /* In minutes rounded up. */ + min_left = time_left / MININSEC + + (time_left % MININSEC ? 1 : 0); + hours_left = min_left / HOURINMIN; + min_left = min_left % HOURINMIN; fputs(_("next appointment:\n"), stdout); fprintf(stdout, " [%02d:%02d] %s\n", hours_left, min_left, next_app.txt); diff --git a/src/notify.c b/src/notify.c index d7dc610..334468b 100644 --- a/src/notify.c +++ b/src/notify.c @@ -279,12 +279,14 @@ void notify_update_bar(void) if (time_left > 0) { int hours_left, minutes_left; - hours_left = (time_left / HOURINSEC); - minutes_left = - (time_left - - hours_left * HOURINSEC) / MININSEC; - pthread_mutex_lock(&nbar.mutex); + /* In minutes rounded up. */ + minutes_left = time_left / MININSEC + + (time_left % MININSEC ? 1 : 0); + + hours_left = minutes_left / HOURINMIN; + minutes_left = minutes_left % HOURINMIN; + pthread_mutex_lock(&nbar.mutex); blinking = time_left <= nbar.cntdwn && notify_trigger(); WINS_NBAR_LOCK; |