| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ash/common/system/chromeos/power/power_status.h" | 5 #include "ash/common/system/chromeos/power/power_status.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <cmath> | 8 #include <cmath> |
| 9 | 9 |
| 10 #include "ash/common/material_design/material_design_controller.h" | 10 #include "ash/common/material_design/material_design_controller.h" |
| 11 #include "ash/resources/vector_icons/vector_icons.h" |
| 11 #include "base/logging.h" | 12 #include "base/logging.h" |
| 12 #include "base/strings/string_number_conversions.h" | 13 #include "base/strings/string_number_conversions.h" |
| 13 #include "base/strings/utf_string_conversions.h" | 14 #include "base/strings/utf_string_conversions.h" |
| 14 #include "chromeos/dbus/dbus_thread_manager.h" | 15 #include "chromeos/dbus/dbus_thread_manager.h" |
| 15 #include "chromeos/dbus/power_manager_client.h" | 16 #include "chromeos/dbus/power_manager_client.h" |
| 16 #include "grit/ash_resources.h" | 17 #include "grit/ash_resources.h" |
| 17 #include "grit/ash_strings.h" | 18 #include "grit/ash_strings.h" |
| 18 #include "ui/base/l10n/l10n_util.h" | 19 #include "ui/base/l10n/l10n_util.h" |
| 19 #include "ui/base/l10n/time_format.h" | 20 #include "ui/base/l10n/time_format.h" |
| 20 #include "ui/base/resource/resource_bundle.h" | 21 #include "ui/base/resource/resource_bundle.h" |
| 21 #include "ui/display/display.h" | 22 #include "ui/display/display.h" |
| 22 #include "ui/display/screen.h" | 23 #include "ui/display/screen.h" |
| 23 #include "ui/gfx/canvas.h" | 24 #include "ui/gfx/canvas.h" |
| 24 #include "ui/gfx/geometry/rect.h" | 25 #include "ui/gfx/geometry/rect.h" |
| 25 #include "ui/gfx/image/image.h" | 26 #include "ui/gfx/image/image.h" |
| 26 #include "ui/gfx/image/image_skia_operations.h" | 27 #include "ui/gfx/image/image_skia_operations.h" |
| 27 #include "ui/gfx/paint_vector_icon.h" | 28 #include "ui/gfx/paint_vector_icon.h" |
| 28 #include "ui/gfx/vector_icons_public.h" | |
| 29 | 29 |
| 30 namespace ash { | 30 namespace ash { |
| 31 namespace { | 31 namespace { |
| 32 | 32 |
| 33 // Updates |proto| to ensure that its fields are consistent. | 33 // Updates |proto| to ensure that its fields are consistent. |
| 34 void SanitizeProto(power_manager::PowerSupplyProperties* proto) { | 34 void SanitizeProto(power_manager::PowerSupplyProperties* proto) { |
| 35 DCHECK(proto); | 35 DCHECK(proto); |
| 36 | 36 |
| 37 if (proto->battery_state() == | 37 if (proto->battery_state() == |
| 38 power_manager::PowerSupplyProperties_BatteryState_FULL) | 38 power_manager::PowerSupplyProperties_BatteryState_FULL) |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 return IDS_ASH_POWER_SOURCE_PORT_RIGHT_BACK; | 93 return IDS_ASH_POWER_SOURCE_PORT_RIGHT_BACK; |
| 94 case power_manager::PowerSupplyProperties_PowerSource_Port_BACK_LEFT: | 94 case power_manager::PowerSupplyProperties_PowerSource_Port_BACK_LEFT: |
| 95 return IDS_ASH_POWER_SOURCE_PORT_BACK_LEFT; | 95 return IDS_ASH_POWER_SOURCE_PORT_BACK_LEFT; |
| 96 case power_manager::PowerSupplyProperties_PowerSource_Port_BACK_RIGHT: | 96 case power_manager::PowerSupplyProperties_PowerSource_Port_BACK_RIGHT: |
| 97 return IDS_ASH_POWER_SOURCE_PORT_BACK_RIGHT; | 97 return IDS_ASH_POWER_SOURCE_PORT_BACK_RIGHT; |
| 98 } | 98 } |
| 99 NOTREACHED(); | 99 NOTREACHED(); |
| 100 return 0; | 100 return 0; |
| 101 } | 101 } |
| 102 | 102 |
| 103 gfx::VectorIconId VectorIconIdForIconBadge(PowerStatus::IconBadge icon_badge) { | 103 const gfx::VectorIcon& VectorIconForIconBadge( |
| 104 PowerStatus::IconBadge icon_badge) { |
| 104 switch (icon_badge) { | 105 switch (icon_badge) { |
| 105 case PowerStatus::ICON_BADGE_NONE: | 106 case PowerStatus::ICON_BADGE_NONE: |
| 106 return gfx::VectorIconId::VECTOR_ICON_NONE; | 107 return gfx::kNoneIcon; |
| 107 case PowerStatus::ICON_BADGE_ALERT: | 108 case PowerStatus::ICON_BADGE_ALERT: |
| 108 return gfx::VectorIconId::SYSTEM_TRAY_BATTERY_ALERT; | 109 return kSystemTrayBatteryAlertIcon; |
| 109 case PowerStatus::ICON_BADGE_BOLT: | 110 case PowerStatus::ICON_BADGE_BOLT: |
| 110 return gfx::VectorIconId::SYSTEM_TRAY_BATTERY_BOLT; | 111 return kSystemTrayBatteryBoltIcon; |
| 111 case PowerStatus::ICON_BADGE_X: | 112 case PowerStatus::ICON_BADGE_X: |
| 112 return gfx::VectorIconId::SYSTEM_TRAY_BATTERY_X; | 113 return kSystemTrayBatteryXIcon; |
| 113 case PowerStatus::ICON_BADGE_UNRELIABLE: | 114 case PowerStatus::ICON_BADGE_UNRELIABLE: |
| 114 return gfx::VectorIconId::SYSTEM_TRAY_BATTERY_UNRELIABLE; | 115 return kSystemTrayBatteryUnreliableIcon; |
| 115 } | 116 } |
| 116 NOTREACHED(); | 117 NOTREACHED(); |
| 117 return gfx::VectorIconId::VECTOR_ICON_NONE; | 118 return gfx::kNoneIcon; |
| 118 } | 119 } |
| 119 | 120 |
| 120 static PowerStatus* g_power_status = NULL; | 121 static PowerStatus* g_power_status = NULL; |
| 121 | 122 |
| 122 // Minimum battery percentage rendered in UI. | 123 // Minimum battery percentage rendered in UI. |
| 123 const int kMinBatteryPercent = 1; | 124 const int kMinBatteryPercent = 1; |
| 124 | 125 |
| 125 // Width and height of battery images. | 126 // Width and height of battery images. |
| 126 const int kBatteryImageHeight = 25; | 127 const int kBatteryImageHeight = 25; |
| 127 const int kBatteryImageWidth = 25; | 128 const int kBatteryImageWidth = 25; |
| (...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 401 const SkColor badge_color = | 402 const SkColor badge_color = |
| 402 use_alert_color ? kBatteryAlertColor : kBatteryBadgeColor; | 403 use_alert_color ? kBatteryAlertColor : kBatteryBadgeColor; |
| 403 const SkColor charge_color = | 404 const SkColor charge_color = |
| 404 use_alert_color ? kBatteryAlertColor : kBatteryChargeColor; | 405 use_alert_color ? kBatteryAlertColor : kBatteryChargeColor; |
| 405 gfx::Canvas canvas( | 406 gfx::Canvas canvas( |
| 406 gfx::Size(kBatteryCanvasSizeMd, kBatteryCanvasSizeMd), | 407 gfx::Size(kBatteryCanvasSizeMd, kBatteryCanvasSizeMd), |
| 407 display::Screen::GetScreen()->GetPrimaryDisplay().device_scale_factor(), | 408 display::Screen::GetScreen()->GetPrimaryDisplay().device_scale_factor(), |
| 408 false); | 409 false); |
| 409 | 410 |
| 410 // Paint the battery's base (background) color. | 411 // Paint the battery's base (background) color. |
| 411 PaintVectorIcon(&canvas, gfx::VectorIconId::SYSTEM_TRAY_BATTERY, | 412 PaintVectorIcon(&canvas, kSystemTrayBatteryIcon, kBatteryCanvasSizeMd, |
| 412 kBatteryCanvasSizeMd, kBatteryBaseColor); | 413 kBatteryBaseColor); |
| 413 | 414 |
| 414 // Paint the charged portion of the battery. Note that |charge_height| adjusts | 415 // Paint the charged portion of the battery. Note that |charge_height| adjusts |
| 415 // for the 2dp of padding between the bottom of the battery icon and the | 416 // for the 2dp of padding between the bottom of the battery icon and the |
| 416 // bottom edge of |canvas|. | 417 // bottom edge of |canvas|. |
| 417 const int charge_height = info.charge_level + 2; | 418 const int charge_height = info.charge_level + 2; |
| 418 gfx::Rect clip_rect(0, kBatteryCanvasSizeMd - charge_height, | 419 gfx::Rect clip_rect(0, kBatteryCanvasSizeMd - charge_height, |
| 419 kBatteryCanvasSizeMd, charge_height); | 420 kBatteryCanvasSizeMd, charge_height); |
| 420 canvas.Save(); | 421 canvas.Save(); |
| 421 canvas.ClipRect(clip_rect); | 422 canvas.ClipRect(clip_rect); |
| 422 PaintVectorIcon(&canvas, gfx::VectorIconId::SYSTEM_TRAY_BATTERY, | 423 PaintVectorIcon(&canvas, kSystemTrayBatteryIcon, kBatteryCanvasSizeMd, |
| 423 kBatteryCanvasSizeMd, charge_color); | 424 charge_color); |
| 424 canvas.Restore(); | 425 canvas.Restore(); |
| 425 | 426 |
| 426 // Paint the badge over top of the battery, if applicable. | 427 // Paint the badge over top of the battery, if applicable. |
| 427 if (info.icon_badge != ICON_BADGE_NONE) { | 428 if (info.icon_badge != ICON_BADGE_NONE) { |
| 428 PaintVectorIcon(&canvas, VectorIconIdForIconBadge(info.icon_badge), | 429 PaintVectorIcon(&canvas, VectorIconForIconBadge(info.icon_badge), |
| 429 kBatteryCanvasSizeMd, badge_color); | 430 kBatteryCanvasSizeMd, badge_color); |
| 430 } | 431 } |
| 431 | 432 |
| 432 return gfx::ImageSkia(canvas.ExtractImageRep()); | 433 return gfx::ImageSkia(canvas.ExtractImageRep()); |
| 433 } | 434 } |
| 434 | 435 |
| 435 gfx::ImageSkia PowerStatus::GetBatteryImageNonMd( | 436 gfx::ImageSkia PowerStatus::GetBatteryImageNonMd( |
| 436 const BatteryImageInfo& info) const { | 437 const BatteryImageInfo& info) const { |
| 437 gfx::Image all; | 438 gfx::Image all; |
| 438 all = ui::ResourceBundle::GetSharedInstance().GetImageNamed(info.resource_id); | 439 all = ui::ResourceBundle::GetSharedInstance().GetImageNamed(info.resource_id); |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 507 } | 508 } |
| 508 | 509 |
| 509 void PowerStatus::PowerChanged( | 510 void PowerStatus::PowerChanged( |
| 510 const power_manager::PowerSupplyProperties& proto) { | 511 const power_manager::PowerSupplyProperties& proto) { |
| 511 proto_ = proto; | 512 proto_ = proto; |
| 512 SanitizeProto(&proto_); | 513 SanitizeProto(&proto_); |
| 513 FOR_EACH_OBSERVER(Observer, observers_, OnPowerStatusChanged()); | 514 FOR_EACH_OBSERVER(Observer, observers_, OnPowerStatusChanged()); |
| 514 } | 515 } |
| 515 | 516 |
| 516 } // namespace ash | 517 } // namespace ash |
| OLD | NEW |