Index: ash/system/chromeos/power/power_status_view.cc |
diff --git a/ash/system/chromeos/power/power_status_view.cc b/ash/system/chromeos/power/power_status_view.cc |
index 4267010c42fff8d1b16f50e6bcad6481970b4a43..4c887849a98122d6eb1e198af7cd5a8200a520ec 100644 |
--- a/ash/system/chromeos/power/power_status_view.cc |
+++ b/ash/system/chromeos/power/power_status_view.cc |
@@ -6,6 +6,7 @@ |
#include "ash/shell.h" |
#include "ash/shell_delegate.h" |
+#include "ash/system/chromeos/power/power_status.h" |
#include "ash/system/chromeos/power/tray_power.h" |
#include "ash/system/tray/fixed_sized_image_view.h" |
#include "ash/system/tray/tray_constants.h" |
@@ -30,8 +31,6 @@ const int kPaddingVertical = 10; |
const int kLabelMinWidth = 120; |
// Padding between battery status text and battery icon on default view. |
const int kPaddingBetweenBatteryStatusAndIcon = 3; |
-// Minimum battery percentage rendered in UI. |
-const int kMinBatteryPercent = 1; |
} // namespace |
PowerStatusView::PowerStatusView(ViewType view_type, |
@@ -42,10 +41,8 @@ PowerStatusView::PowerStatusView(ViewType view_type, |
time_status_label_(NULL), |
percentage_label_(NULL), |
icon_(NULL), |
- icon_image_index_(-1), |
- icon_image_offset_(0), |
- battery_charging_unreliable_(false), |
view_type_(view_type) { |
+ PowerStatus::Get()->AddObserver(this); |
if (view_type == VIEW_DEFAULT) { |
time_status_label_ = new views::Label; |
percentage_label_ = new views::Label; |
@@ -56,17 +53,22 @@ PowerStatusView::PowerStatusView(ViewType view_type, |
time_label_ = new views::Label; |
LayoutNotificationView(); |
} |
- Update(); |
+ OnPowerStatusChanged(); |
} |
-void PowerStatusView::UpdatePowerStatus( |
- const chromeos::PowerSupplyStatus& status) { |
- supply_status_ = status; |
- // Sanitize. |
- if (supply_status_.battery_is_full) |
- supply_status_.battery_percentage = 100.0; |
+PowerStatusView::~PowerStatusView() { |
+ PowerStatus::Get()->RemoveObserver(this); |
+} |
+ |
+void PowerStatusView::OnPowerStatusChanged() { |
+ view_type_ == VIEW_DEFAULT ? |
+ UpdateTextForDefaultView() : UpdateTextForNotificationView(); |
- Update(); |
+ if (icon_) { |
+ icon_->SetImage( |
+ PowerStatus::Get()->GetBatteryImage(PowerStatus::ICON_DARK)); |
+ icon_->SetVisible(true); |
+ } |
} |
void PowerStatusView::LayoutDefaultView() { |
@@ -107,43 +109,29 @@ void PowerStatusView::LayoutNotificationView() { |
AddChildView(time_label_); |
} |
-void PowerStatusView::UpdateText() { |
- view_type_ == VIEW_DEFAULT ? |
- UpdateTextForDefaultView() : UpdateTextForNotificationView(); |
- accessible_name_ = TrayPower::GetAccessibleNameString(supply_status_); |
-} |
- |
void PowerStatusView::UpdateTextForDefaultView() { |
+ const PowerStatus& status = *PowerStatus::Get(); |
ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
base::string16 battery_percentage; |
base::string16 battery_time_status; |
- bool is_charging_unreliable = |
- TrayPower::IsBatteryChargingUnreliable(supply_status_); |
- if (supply_status_.line_power_on && supply_status_.battery_is_full) { |
+ |
+ if (status.IsLinePowerConnected() && status.IsBatteryFull()) { |
battery_time_status = |
rb.GetLocalizedString(IDS_ASH_STATUS_TRAY_BATTERY_FULL); |
- } else if (supply_status_.battery_percentage < 0.0f) { |
- battery_time_status = |
- is_charging_unreliable ? |
- rb.GetLocalizedString(IDS_ASH_STATUS_TRAY_BATTERY_CHARGING_UNRELIABLE) : |
- rb.GetLocalizedString(IDS_ASH_STATUS_TRAY_BATTERY_CALCULATING); |
} else { |
battery_percentage = l10n_util::GetStringFUTF16( |
IDS_ASH_STATUS_TRAY_BATTERY_PERCENT_ONLY, |
- base::IntToString16(TrayPower::GetRoundedBatteryPercentage( |
- supply_status_.battery_percentage))); |
- if (is_charging_unreliable) { |
+ base::IntToString16(status.GetRoundedBatteryPercent())); |
+ if (status.IsUsbChargerConnected()) { |
battery_time_status = rb.GetLocalizedString( |
IDS_ASH_STATUS_TRAY_BATTERY_CHARGING_UNRELIABLE); |
} else { |
- if (supply_status_.is_calculating_battery_time) { |
+ if (status.IsBatteryTimeBeingCalculated()) { |
battery_time_status = |
rb.GetLocalizedString(IDS_ASH_STATUS_TRAY_BATTERY_CALCULATING); |
} else { |
- base::TimeDelta time = base::TimeDelta::FromSeconds( |
- supply_status_.line_power_on ? |
- supply_status_.battery_seconds_to_full : |
- supply_status_.battery_seconds_to_empty); |
+ base::TimeDelta time = status.IsLinePowerConnected() ? |
+ status.GetBatteryTimeToFull() : status.GetBatteryTimeToEmpty(); |
int hour = time.InHours(); |
int min = (time - base::TimeDelta::FromHours(hour)).InMinutes(); |
if (hour || min) { |
@@ -152,7 +140,7 @@ void PowerStatusView::UpdateTextForDefaultView() { |
base::IntToString16(min); |
battery_time_status = |
l10n_util::GetStringFUTF16( |
- supply_status_.line_power_on ? |
+ status.IsLinePowerConnected() ? |
IDS_ASH_STATUS_TRAY_BATTERY_TIME_UNTIL_FULL_SHORT : |
IDS_ASH_STATUS_TRAY_BATTERY_TIME_LEFT_SHORT, |
base::IntToString16(hour), |
@@ -170,60 +158,44 @@ void PowerStatusView::UpdateTextForDefaultView() { |
} |
void PowerStatusView::UpdateTextForNotificationView() { |
- int hour = 0; |
- int min = 0; |
- if (!supply_status_.is_calculating_battery_time) { |
- base::TimeDelta time = base::TimeDelta::FromSeconds( |
- supply_status_.line_power_on ? |
- supply_status_.battery_seconds_to_full : |
- supply_status_.battery_seconds_to_empty); |
- hour = time.InHours(); |
- min = (time - base::TimeDelta::FromHours(hour)).InMinutes(); |
- } |
- bool is_charging_unreliable = |
- TrayPower::IsBatteryChargingUnreliable(supply_status_); |
- if (supply_status_.line_power_on && supply_status_.battery_is_full) { |
+ const PowerStatus& status = *PowerStatus::Get(); |
+ if (status.IsLinePowerConnected() && status.IsBatteryFull()) { |
status_label_->SetText( |
ui::ResourceBundle::GetSharedInstance().GetLocalizedString( |
IDS_ASH_STATUS_TRAY_BATTERY_FULL)); |
} else { |
- if (supply_status_.battery_percentage < 0.0f) { |
- // If charging is unreliable and no percentage available, we |
- // leave the top field, |staus_label|, blank. We do not want to |
- // show "Calculating". The user is informed in the bottom field, |
- // |time_label|, that "Charging not reliable". |
- status_label_->SetText( |
- is_charging_unreliable ? |
- base::string16() : |
- ui::ResourceBundle::GetSharedInstance().GetLocalizedString( |
- IDS_ASH_STATUS_TRAY_BATTERY_CALCULATING)); |
- } else { |
- status_label_->SetText( |
- l10n_util::GetStringFUTF16( |
- IDS_ASH_STATUS_TRAY_BATTERY_PERCENT, |
- base::IntToString16(TrayPower::GetRoundedBatteryPercentage( |
- supply_status_.battery_percentage)))); |
- } |
+ status_label_->SetText( |
+ l10n_util::GetStringFUTF16( |
+ IDS_ASH_STATUS_TRAY_BATTERY_PERCENT, |
+ base::IntToString16(status.GetRoundedBatteryPercent()))); |
} |
- if (is_charging_unreliable) { |
+ int hour = 0; |
+ int min = 0; |
+ if (!status.IsBatteryTimeBeingCalculated()) { |
+ base::TimeDelta time = status.IsLinePowerConnected() ? |
+ status.GetBatteryTimeToFull() : status.GetBatteryTimeToEmpty(); |
+ hour = time.InHours(); |
+ min = (time - base::TimeDelta::FromHours(hour)).InMinutes(); |
+ } |
+ |
+ if (status.IsUsbChargerConnected()) { |
time_label_->SetText( |
ui::ResourceBundle::GetSharedInstance().GetLocalizedString( |
IDS_ASH_STATUS_TRAY_BATTERY_CHARGING_UNRELIABLE)); |
- } else if (supply_status_.is_calculating_battery_time) { |
+ } else if (status.IsBatteryTimeBeingCalculated()) { |
time_label_->SetText( |
ui::ResourceBundle::GetSharedInstance().GetLocalizedString( |
IDS_ASH_STATUS_TRAY_BATTERY_CALCULATING)); |
} else if (hour || min) { |
- if (supply_status_.line_power_on) { |
+ if (status.IsLinePowerConnected()) { |
time_label_->SetText( |
l10n_util::GetStringFUTF16( |
IDS_ASH_STATUS_TRAY_BATTERY_TIME_UNTIL_FULL, |
base::IntToString16(hour), |
base::IntToString16(min))); |
} else { |
- // This is a low battery warning, which prompts user when battery |
- // time left is not much (ie in minutes). |
+ // This is a low battery warning prompting the user in minutes. |
min = hour * 60 + min; |
ShellDelegate* delegate = Shell::GetInstance()->delegate(); |
if (delegate) { |
@@ -238,54 +210,6 @@ void PowerStatusView::UpdateTextForNotificationView() { |
} |
} |
-base::string16 PowerStatusView::GetBatteryTimeAccessibilityString( |
- int hour, int min) { |
- DCHECK(hour || min); |
- if (hour && !min) { |
- return Shell::GetInstance()->delegate()->GetTimeDurationLongString( |
- base::TimeDelta::FromHours(hour)); |
- } else if (min && !hour) { |
- return Shell::GetInstance()->delegate()->GetTimeDurationLongString( |
- base::TimeDelta::FromMinutes(min)); |
- } else { |
- return l10n_util::GetStringFUTF16( |
- IDS_ASH_STATUS_TRAY_BATTERY_TIME_ACCESSIBLE, |
- Shell::GetInstance()->delegate()->GetTimeDurationLongString( |
- base::TimeDelta::FromHours(hour)), |
- Shell::GetInstance()->delegate()->GetTimeDurationLongString( |
- base::TimeDelta::FromMinutes(min))); |
- } |
-} |
- |
-void PowerStatusView::UpdateIcon() { |
- if (icon_) { |
- int index = TrayPower::GetBatteryImageIndex(supply_status_); |
- int offset = TrayPower::GetBatteryImageOffset(supply_status_); |
- bool charging_unreliable = |
- TrayPower::IsBatteryChargingUnreliable(supply_status_); |
- if (icon_image_index_ != index || |
- icon_image_offset_ != offset || |
- battery_charging_unreliable_ != charging_unreliable) { |
- icon_image_index_ = index; |
- icon_image_offset_ = offset; |
- battery_charging_unreliable_ = charging_unreliable; |
- if (icon_image_index_ != -1) { |
- icon_->SetImage( |
- TrayPower::GetBatteryImage(icon_image_index_, |
- icon_image_offset_, |
- battery_charging_unreliable_, |
- ICON_DARK)); |
- } |
- } |
- icon_->SetVisible(true); |
- } |
-} |
- |
-void PowerStatusView::Update() { |
- UpdateText(); |
- UpdateIcon(); |
-} |
- |
void PowerStatusView::ChildPreferredSizeChanged(views::View* child) { |
PreferredSizeChanged(); |
} |