[haiku-commits] r39732 - haiku/trunk/src/apps/powerstatus

  • From: clemens.zeidler@xxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 5 Dec 2010 01:48:56 +0100 (CET)

Author: czeidler
Date: 2010-12-05 01:48:56 +0100 (Sun, 05 Dec 2010)
New Revision: 39732
Changeset: http://dev.haiku-os.org/changeset/39732
Ticket: http://dev.haiku-os.org/ticket/6952

Modified:
   haiku/trunk/src/apps/powerstatus/PowerStatusView.cpp
Log:
Patch by Alexander von Gluck. Detect not-present / empty batteries. Fix #6952.



Modified: haiku/trunk/src/apps/powerstatus/PowerStatusView.cpp
===================================================================
--- haiku/trunk/src/apps/powerstatus/PowerStatusView.cpp        2010-12-05 
00:41:53 UTC (rev 39731)
+++ haiku/trunk/src/apps/powerstatus/PowerStatusView.cpp        2010-12-05 
00:48:56 UTC (rev 39732)
@@ -1,10 +1,11 @@
 /*
- * Copyright 2006-2009, Haiku, Inc. All Rights Reserved.
+ * Copyright 2006-2010, Haiku, Inc. All Rights Reserved.
  * Distributed under the terms of the MIT License.
  *
  * Authors:
  *             Axel Dörfler, axeld@xxxxxxxxxxxxxxxx
  *             Clemens Zeidler, haiku@xxxxxxxxxxxxxxxxxx
+ *             Alexander von Gluck, kallisti5@xxxxxxxxxxx 
  */
 
 
@@ -177,8 +178,10 @@
                rect.left - 1, floorf(rect.bottom - rect.Height() / 4)));
 
        int32 percent = fPercent;
-       if (percent > 100 || percent < 0 || !fHasBattery)
+       if (percent > 100)
                percent = 100;
+       else if (percent < 0 || !fHasBattery)
+               percent = 0;
 
        if (percent > 0) {
                rect.InsetBy(gap, gap);
@@ -332,18 +335,18 @@
 
        _GetBatteryInfo(&fBatteryInfo, fBatteryID);
 
-       if (fBatteryInfo.full_capacity != 0)
+       fHasBattery = (fBatteryInfo.state & BATTERY_CRITICAL_STATE) == 0;
+
+       if (fBatteryInfo.full_capacity > 0 && fHasBattery) {
                fPercent = (100 * fBatteryInfo.capacity) / 
fBatteryInfo.full_capacity;
-
-       fTimeLeft = fBatteryInfo.time_left;
-       if ((fBatteryInfo.state & BATTERY_CHARGING) != 0)
-               fOnline = true;
-       else
+               fOnline = (fBatteryInfo.state & BATTERY_CHARGING) != 0;
+               fTimeLeft = fBatteryInfo.time_left;
+       } else {
+               fPercent = 0;
                fOnline = false;
+               fTimeLeft = false;
+       }
 
-       // TODO: if critical really means that, its name should be changed...
-       fHasBattery = (fBatteryInfo.state & BATTERY_CRITICAL_STATE) == 0
-               && fPercent >= 0;
 
        if (fInDeskbar) {
                // make sure the tray icon is large enough


Other related posts: