From 89dcd9027d29601bc45c0852485dc243a56d173f Mon Sep 17 00:00:00 2001
From: Giovanni Campagna <gcampagna@src.gnome.org>
Date: Sat, 19 Feb 2011 15:40:53 +0100
Subject: [PATCH] PowerStatus: report 0 minutes as "Estimating..."

When UPower has not yet collected enough data to calculate a time
to discharge, it will report 0 minutes. Show "Estimating..." in
that case instead.

https://bugzilla.gnome.org/show_bug.cgi?id=642753
---
 js/ui/status/power.js | 34 ++++++++++++++++++++--------------
 1 file changed, 20 insertions(+), 14 deletions(-)

diff --git a/js/ui/status/power.js b/js/ui/status/power.js
index 94469334d..f3625cc2d 100644
--- a/js/ui/status/power.js
+++ b/js/ui/status/power.js
@@ -104,21 +104,27 @@ Indicator.prototype = {
             if (device_type == UPDeviceType.BATTERY) {
                 this._hasPrimary = true;
                 let time = Math.round(seconds / 60);
-                let minutes = time % 60;
-                let hours = Math.floor(time / 60);
-                let timestring;
-                if (time > 60) {
-                    if (minutes == 0) {
-                        timestring = Gettext.ngettext("%d hour remaining", "%d hours remaining", hours).format(hours);
-                    } else {
-                        /* TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" */
-                        let template = _("%d %s %d %s remaining");
+                if (time == 0) {
+                    // 0 is reported when UPower does not have enough data
+                    // to estimate battery life
+                    this._batteryItem.label.text = _("Estimating...");
+                } else {
+                    let minutes = time % 60;
+                    let hours = Math.floor(time / 60);
+                    let timestring;
+                    if (time > 60) {
+                        if (minutes == 0) {
+                            timestring = Gettext.ngettext("%d hour remaining", "%d hours remaining", hours).format(hours);
+                        } else {
+                            /* TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" */
+                            let template = _("%d %s %d %s remaining");
 
-                        timestring = template.format (hours, Gettext.ngettext("hour", "hours", hours), minutes, Gettext.ngettext("minute", "minutes", minutes));
-                    }
-                } else
-                    timestring = Gettext.ngettext("%d minute remaining", "%d minutes remaining", minutes).format(minutes);
-                this._batteryItem.label.text = timestring;
+                            timestring = template.format (hours, Gettext.ngettext("hour", "hours", hours), minutes, Gettext.ngettext("minute", "minutes", minutes));
+                        }
+                    } else
+                        timestring = Gettext.ngettext("%d minute remaining", "%d minutes remaining", minutes).format(minutes);
+                    this._batteryItem.label.text = timestring;
+                }
                 this._primaryPercentage.text = Math.round(percentage) + '%';
                 this._batteryItem.actor.show();
                 if (this._deviceItems.length > 0)