@ -3024,8 +3024,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 ) ;
@ -3076,9 +3079,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 ) ;
}
@ -3097,17 +3105,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
// 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 ) ;
}
}
}