| Index: ash/system/chromeos/settings/tray_settings.cc
|
| diff --git a/ash/system/chromeos/settings/tray_settings.cc b/ash/system/chromeos/settings/tray_settings.cc
|
| index b44e13defb1c6e05cb336b00fa97723fa7316a35..8153aeae81e767da60c7d54719e9fadd07137c2c 100644
|
| --- a/ash/system/chromeos/settings/tray_settings.cc
|
| +++ b/ash/system/chromeos/settings/tray_settings.cc
|
| @@ -30,12 +30,14 @@ namespace internal {
|
|
|
| namespace tray {
|
|
|
| -class SettingsDefaultView : public ActionableView {
|
| +class SettingsDefaultView : public ActionableView,
|
| + public PowerStatus::Observer {
|
| public:
|
| explicit SettingsDefaultView(user::LoginStatus status)
|
| : login_status_(status),
|
| label_(NULL),
|
| power_status_view_(NULL) {
|
| + PowerStatus::Get()->AddObserver(this);
|
| SetLayoutManager(new views::BoxLayout(views::BoxLayout::kHorizontal,
|
| ash::kTrayPopupPaddingHorizontal, 0,
|
| ash::kTrayPopupPaddingBetweenItems));
|
| @@ -58,27 +60,16 @@ class SettingsDefaultView : public ActionableView {
|
| power_view_right_align = true;
|
| }
|
|
|
| - chromeos::PowerSupplyStatus power_status =
|
| - PowerStatus::Get()->GetPowerSupplyStatus();
|
| - if (power_status.battery_is_present) {
|
| + if (PowerStatus::Get()->IsBatteryPresent()) {
|
| power_status_view_ = new ash::internal::PowerStatusView(
|
| ash::internal::PowerStatusView::VIEW_DEFAULT, power_view_right_align);
|
| AddChildView(power_status_view_);
|
| - UpdatePowerStatus(power_status);
|
| + OnPowerStatusChanged();
|
| }
|
| }
|
|
|
| - virtual ~SettingsDefaultView() {}
|
| -
|
| - void UpdatePowerStatus(const chromeos::PowerSupplyStatus& status) {
|
| - if (!power_status_view_)
|
| - return;
|
| - power_status_view_->UpdatePowerStatus(status);
|
| - base::string16 accessible_name = label_ ?
|
| - label_->text() + ASCIIToUTF16(", ") +
|
| - power_status_view_->accessible_name() :
|
| - power_status_view_->accessible_name();
|
| - SetAccessibleName(accessible_name);
|
| + virtual ~SettingsDefaultView() {
|
| + PowerStatus::Get()->RemoveObserver(this);
|
| }
|
|
|
| // Overridden from ash::internal::ActionableView.
|
| @@ -112,6 +103,18 @@ class SettingsDefaultView : public ActionableView {
|
| Layout();
|
| }
|
|
|
| + // Overridden from PowerStatus::Observer.
|
| + virtual void OnPowerStatusChanged() OVERRIDE {
|
| + if (!PowerStatus::Get()->IsBatteryPresent())
|
| + return;
|
| +
|
| + base::string16 accessible_name = label_ ?
|
| + label_->text() + ASCIIToUTF16(", ") +
|
| + PowerStatus::Get()->GetAccessibleNameString() :
|
| + PowerStatus::Get()->GetAccessibleNameString();
|
| + SetAccessibleName(accessible_name);
|
| + }
|
| +
|
| private:
|
| user::LoginStatus login_status_;
|
| views::Label* label_;
|
| @@ -125,11 +128,9 @@ class SettingsDefaultView : public ActionableView {
|
| TraySettings::TraySettings(SystemTray* system_tray)
|
| : SystemTrayItem(system_tray),
|
| default_view_(NULL) {
|
| - PowerStatus::Get()->AddObserver(this);
|
| }
|
|
|
| TraySettings::~TraySettings() {
|
| - PowerStatus::Get()->RemoveObserver(this);
|
| }
|
|
|
| views::View* TraySettings::CreateTrayView(user::LoginStatus status) {
|
| @@ -138,7 +139,7 @@ views::View* TraySettings::CreateTrayView(user::LoginStatus status) {
|
|
|
| views::View* TraySettings::CreateDefaultView(user::LoginStatus status) {
|
| if ((status == user::LOGGED_IN_NONE || status == user::LOGGED_IN_LOCKED) &&
|
| - !PowerStatus::Get()->GetPowerSupplyStatus().battery_is_present)
|
| + !PowerStatus::Get()->IsBatteryPresent())
|
| return NULL;
|
|
|
| CHECK(default_view_ == NULL);
|
| @@ -164,11 +165,5 @@ void TraySettings::DestroyDetailedView() {
|
| void TraySettings::UpdateAfterLoginStatusChange(user::LoginStatus status) {
|
| }
|
|
|
| -void TraySettings::OnPowerStatusChanged(
|
| - const chromeos::PowerSupplyStatus& status) {
|
| - if (default_view_)
|
| - default_view_->UpdatePowerStatus(status);
|
| -}
|
| -
|
| } // namespace internal
|
| } // namespace ash
|
|
|