blob: 467e6a3a9977d5a6ade7ea4272844526f405a65e [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ash/public/cpp/power_utils.h"
#include "base/time/time.h"
#include "chromeos/dbus/power_manager/power_supply_properties.pb.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/chromeos/strings/grit/ui_chromeos_strings.h"
namespace ash {
namespace power_utils {
bool ShouldDisplayBatteryTime(const base::TimeDelta& time) {
// Put limits on the maximum and minimum battery time-to-full or time-to-empty
// that should be displayed in the UI. If the current is close to zero,
// battery time estimates can get very large; avoid displaying these large
// numbers.
return time >= base::TimeDelta::FromMinutes(1) &&
time <= base::TimeDelta::FromDays(1);
}
int GetRoundedBatteryPercent(double battery_percent) {
// Minimum battery percentage rendered in UI.
constexpr int kMinBatteryPercent = 1;
return std::max(kMinBatteryPercent, static_cast<int>(battery_percent + 0.5));
}
void SplitTimeIntoHoursAndMinutes(const base::TimeDelta& time,
int* hours,
int* minutes) {
DCHECK(hours);
DCHECK(minutes);
const int total_minutes = static_cast<int>(time.InSecondsF() / 60 + 0.5);
*hours = total_minutes / 60;
*minutes = total_minutes % 60;
}
base::string16 PowerSourceToDisplayString(
const power_manager::PowerSupplyProperties_PowerSource& source) {
auto source_to_id = [](const power_manager::PowerSupplyProperties_PowerSource&
source) {
switch (source.port()) {
case power_manager::PowerSupplyProperties_PowerSource_Port_UNKNOWN:
return IDS_POWER_SOURCE_PORT_UNKNOWN;
case power_manager::PowerSupplyProperties_PowerSource_Port_LEFT:
return IDS_POWER_SOURCE_PORT_LEFT;
case power_manager::PowerSupplyProperties_PowerSource_Port_RIGHT:
return IDS_POWER_SOURCE_PORT_RIGHT;
case power_manager::PowerSupplyProperties_PowerSource_Port_BACK:
return IDS_POWER_SOURCE_PORT_BACK;
case power_manager::PowerSupplyProperties_PowerSource_Port_FRONT:
return IDS_POWER_SOURCE_PORT_FRONT;
case power_manager::PowerSupplyProperties_PowerSource_Port_LEFT_FRONT:
return IDS_POWER_SOURCE_PORT_LEFT_FRONT;
case power_manager::PowerSupplyProperties_PowerSource_Port_LEFT_BACK:
return IDS_POWER_SOURCE_PORT_LEFT_BACK;
case power_manager::PowerSupplyProperties_PowerSource_Port_RIGHT_FRONT:
return IDS_POWER_SOURCE_PORT_RIGHT_FRONT;
case power_manager::PowerSupplyProperties_PowerSource_Port_RIGHT_BACK:
return IDS_POWER_SOURCE_PORT_RIGHT_BACK;
case power_manager::PowerSupplyProperties_PowerSource_Port_BACK_LEFT:
return IDS_POWER_SOURCE_PORT_BACK_LEFT;
case power_manager::PowerSupplyProperties_PowerSource_Port_BACK_RIGHT:
return IDS_POWER_SOURCE_PORT_BACK_RIGHT;
}
NOTREACHED();
return 0;
};
return l10n_util::GetStringUTF16(source_to_id(source));
}
} // namespace power_utils
} // namespace ash