summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tdecore/tdehw/tdehardwaredevices.cpp32
1 files changed, 24 insertions, 8 deletions
diff --git a/tdecore/tdehw/tdehardwaredevices.cpp b/tdecore/tdehw/tdehardwaredevices.cpp
index 7d222d6f7..7b8c0ad87 100644
--- a/tdecore/tdehw/tdehardwaredevices.cpp
+++ b/tdecore/tdehw/tdehardwaredevices.cpp
@@ -3073,8 +3073,11 @@ void TDEHardwareDevices::updateExistingDeviceInformation(TDEGenericDevice* exist
valuesdir.setFilter(TQDir::All);
TQString nodename;
double bdevice_capacity = 0;
+ int bdevice_time_to_empty = 0;
+ int bdevice_time_to_full = 0;
bool bdevice_has_energy = false;
bool bdevice_has_time_to_empty = false;
+ bool bdevice_has_time_to_full = false;
const TQFileInfoList *dirlist = valuesdir.entryInfoList();
if (dirlist) {
TQFileInfoListIterator valuesdirit(*dirlist);
@@ -3125,9 +3128,14 @@ void TDEHardwareDevices::updateExistingDeviceInformation(TDEGenericDevice* exist
}
else if (nodename == "time_to_empty_now") {
// Convert from minutes to seconds
- bdevice->internalSetTimeRemaining(line.toDouble()*60);
+ bdevice_time_to_empty = line.toDouble()*60;
bdevice_has_time_to_empty = true;
}
+ else if (nodename == "time_to_full_now") {
+ // Convert from minutes to seconds
+ bdevice_time_to_full = line.toDouble()*60;
+ bdevice_has_time_to_full = true;
+ }
else if (nodename == "voltage_min_design") {
bdevice->internalSetMinimumVoltage(line.toDouble()/1000000.0);
}
@@ -3146,17 +3154,25 @@ void TDEHardwareDevices::updateExistingDeviceInformation(TDEGenericDevice* exist
}
// Calculate time remaining
- if (bdevice->dischargeRate() > 0) {
- // Discharge/charge rate is in watt-hours
- // Energy is in watt-hours
- // Therefore, energy/rate = time in hours
- // Convert to seconds...
- if (bdevice->status() == TDEBatteryStatus::Charging) {
+ // Discharge/charge rate is in amper
+ // Energy is in amper-hours
+ // Therefore, energy/rate = time in hours
+ // Convert to seconds...
+ if (bdevice->status() == TDEBatteryStatus::Charging) {
+ if (!bdevice_has_time_to_full && bdevice->dischargeRate() > 0) {
bdevice->internalSetTimeRemaining(((bdevice->maximumEnergy()-bdevice->energy())/bdevice->dischargeRate())*60*60);
}
- else if (!bdevice_has_time_to_empty) {
+ else {
+ bdevice->internalSetTimeRemaining(bdevice_time_to_full);
+ }
+ }
+ else {
+ if (!bdevice_has_time_to_empty && bdevice->dischargeRate() > 0) {
bdevice->internalSetTimeRemaining((bdevice->energy()/bdevice->dischargeRate())*60*60);
}
+ else {
+ bdevice->internalSetTimeRemaining(bdevice_time_to_empty);
+ }
}
}