From 371c7eb00f44f80cd87f3dcd72f39b62ca1d3f31 Mon Sep 17 00:00:00 2001 From: Lars Henriksen Date: Mon, 8 Apr 2019 07:52:57 +0200 Subject: 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 Signed-off-by: Lukas Fleischer --- src/args.c | 7 +++++-- src/notify.c | 12 +++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/args.c b/src/args.c index 54eb52a..66584cf 100644 --- a/src/args.c +++ b/src/args.c @@ -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; -- cgit v1.2.3-70-g09d2