summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Henriksen <LarsHenriksen@get2net.dk>2019-04-08 07:52:57 +0200
committerLukas Fleischer <lfleischer@calcurse.org>2019-04-13 11:58:04 +0200
commit371c7eb00f44f80cd87f3dcd72f39b62ca1d3f31 (patch)
tree602d379f439b0eb5d28cacf7e45428696733d8a1
parentc8d53972148e7713e40779e75c1932cacffd526c (diff)
downloadcalcurse-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.c7
-rw-r--r--src/notify.c12
2 files changed, 12 insertions, 7 deletions
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;