Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(186)

Unified Diff: ash/system/power/tray_power.cc

Issue 10540041: Add battery status to settings row in uber tray bubble. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix nits. Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ash/system/power/tray_power.h ('k') | ash/system/settings/tray_settings.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/system/power/tray_power.cc
diff --git a/ash/system/power/tray_power.cc b/ash/system/power/tray_power.cc
index b851a75bbe614394805943b17ed8cb8c0287e7a2..6a8d07cadf8d39bc90f2e89b2bfa2084f2e2865e 100644
--- a/ash/system/power/tray_power.cc
+++ b/ash/system/power/tray_power.cc
@@ -7,6 +7,7 @@
#include "ash/ash_switches.h"
#include "ash/shell.h"
#include "ash/system/date/date_view.h"
+#include "ash/system/power/power_status_view.h"
#include "ash/system/power/power_supply_status.h"
#include "ash/system/tray/system_tray_delegate.h"
#include "ash/system/tray/tray_constants.h"
@@ -53,40 +54,6 @@ const int kCriticalSeconds = 5 * 60;
const int kLowPowerSeconds = 15 * 60;
const int kNoWarningSeconds = 30 * 60;
-enum IconSet {
- ICON_LIGHT,
- ICON_DARK
-};
-
-gfx::ImageSkia GetBatteryImage(const PowerSupplyStatus& supply_status,
- IconSet icon_set) {
- gfx::ImageSkia image;
- gfx::Image all = ui::ResourceBundle::GetSharedInstance().GetImageNamed(
- icon_set == ICON_DARK ?
- IDR_AURA_UBER_TRAY_POWER_SMALL_DARK : IDR_AURA_UBER_TRAY_POWER_SMALL);
-
- int image_index = 0;
- if (supply_status.battery_percentage >= 100) {
- image_index = kNumPowerImages - 1;
- } else if (!supply_status.battery_is_present) {
- image_index = kNumPowerImages;
- } else {
- double percentage = supply_status.is_calculating_battery_time ? 100.0 :
- supply_status.battery_percentage;
- image_index = static_cast<int>(percentage / 100.0 * (kNumPowerImages - 1));
- image_index = std::max(std::min(image_index, kNumPowerImages - 2), 0);
- }
-
- // TODO(mbolohan): Remove the 2px offset when the assets are centered. See
- // crbug.com/119832.
- SkIRect region = SkIRect::MakeXYWH(
- (supply_status.line_power_on ? kBatteryImageWidth : 0) + 2,
- image_index * kBatteryImageHeight,
- kBatteryImageWidth - 2, kBatteryImageHeight);
- all.ToImageSkia()->extractSubset(&image, region);
- return image;
-}
-
} // namespace
namespace tray {
@@ -113,7 +80,7 @@ class PowerTrayView : public views::ImageView {
private:
void UpdateImage() {
- SetImage(GetBatteryImage(supply_status_, ICON_LIGHT));
+ SetImage(TrayPower::GetBatteryImage(supply_status_, ICON_LIGHT));
}
PowerSupplyStatus supply_status_;
@@ -121,148 +88,6 @@ class PowerTrayView : public views::ImageView {
DISALLOW_COPY_AND_ASSIGN(PowerTrayView);
};
-// This view is used only for the popup.
-class PowerStatusView : public views::View {
- public:
- enum ViewType {
- VIEW_DEFAULT,
- VIEW_NOTIFICATION
- };
-
- explicit PowerStatusView(ViewType view_type) : icon_(NULL) {
- status_label_ = new views::Label;
- time_label_ = new views::Label;
-
- if (view_type == VIEW_DEFAULT)
- LayoutDefaultView();
- else
- LayoutNotificationView();
-
- Update();
- }
-
- virtual ~PowerStatusView() {
- }
-
- void UpdatePowerStatus(const PowerSupplyStatus& status) {
- supply_status_ = status;
- // Sanitize.
- if (supply_status_.battery_is_full)
- supply_status_.battery_percentage = 100.0;
-
- Update();
- }
-
- private:
- void LayoutDefaultView() {
- set_border(views::Border::CreateEmptyBorder(
- kPaddingVertical, kTrayPopupPaddingHorizontal,
- kPaddingVertical, kTrayPopupPaddingHorizontal));
-
- status_label_->SetHorizontalAlignment(views::Label::ALIGN_RIGHT);
- time_label_->SetHorizontalAlignment(views::Label::ALIGN_RIGHT);
-
- icon_ = new views::ImageView;
-
- views::GridLayout* layout = new views::GridLayout(this);
- SetLayoutManager(layout);
-
- views::ColumnSet* columns = layout->AddColumnSet(0);
-
- columns->AddPaddingColumn(0, kTrayPopupPaddingHorizontal);
- // Status + Time
- columns->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL,
- 0, views::GridLayout::USE_PREF, 0, kLabelMinWidth);
-
- columns->AddPaddingColumn(0, kTrayPopupPaddingHorizontal/2);
-
- // Icon
- columns->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL,
- 0, views::GridLayout::USE_PREF, 0, 0);
-
- columns->AddPaddingColumn(0, kTrayPopupPaddingHorizontal);
-
- layout->AddPaddingRow(0, kPaddingVertical);
-
- layout->StartRow(0, 0);
- layout->AddView(status_label_);
- layout->AddView(icon_, 1, 3); // 3 rows for icon
-
- layout->AddPaddingRow(0, kPaddingVertical/3);
- layout->StartRow(0, 0);
- layout->AddView(time_label_);
-
- layout->AddPaddingRow(0, kPaddingVertical);
- }
-
- void LayoutNotificationView() {
- SetLayoutManager(
- new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 1));
- status_label_->SetHorizontalAlignment(views::Label::ALIGN_LEFT);
- AddChildView(status_label_);
-
- time_label_->SetHorizontalAlignment(views::Label::ALIGN_LEFT);
- AddChildView(time_label_);
- }
-
- void UpdateText() {
- base::TimeDelta time = base::TimeDelta::FromSeconds(
- supply_status_.line_power_on ?
- supply_status_.averaged_battery_time_to_full :
- supply_status_.averaged_battery_time_to_empty);
- int hour = time.InHours();
- int min = (time - base::TimeDelta::FromHours(hour)).InMinutes();
-
- if (supply_status_.line_power_on && !hour && !min) {
- status_label_->SetText(
- ui::ResourceBundle::GetSharedInstance().GetLocalizedString(
- IDS_ASH_STATUS_TRAY_BATTERY_FULL));
- } else {
- status_label_->SetText(
- l10n_util::GetStringFUTF16(
- IDS_ASH_STATUS_TRAY_BATTERY_PERCENT,
- base::IntToString16(
- static_cast<int>(supply_status_.battery_percentage))));
- }
-
- if (supply_status_.is_calculating_battery_time) {
- time_label_->SetText(
- ui::ResourceBundle::GetSharedInstance().GetLocalizedString(
- IDS_ASH_STATUS_TRAY_BATTERY_CALCULATING));
- } else if (hour || min) {
- time_label_->SetText(
- l10n_util::GetStringFUTF16(
- supply_status_.line_power_on ?
- IDS_ASH_STATUS_TRAY_BATTERY_TIME_UNTIL_FULL :
- IDS_ASH_STATUS_TRAY_BATTERY_TIME_UNTIL_EMPTY,
- base::IntToString16(hour),
- base::IntToString16(min)));
- } else {
- time_label_->SetText(string16());
- }
- }
-
- void UpdateIcon() {
- if (icon_) {
- icon_->SetImage(GetBatteryImage(supply_status_, ICON_DARK));
- icon_->SetVisible(true);
- }
- }
-
- void Update() {
- UpdateText();
- UpdateIcon();
- }
-
- views::Label* status_label_;
- views::Label* time_label_;
- views::ImageView* icon_;
-
- PowerSupplyStatus supply_status_;
-
- DISALLOW_COPY_AND_ASSIGN(PowerStatusView);
-};
-
class PowerNotificationView : public TrayNotificationView {
public:
explicit PowerNotificationView(TrayPower* tray)
@@ -274,7 +99,7 @@ class PowerNotificationView : public TrayNotificationView {
}
void UpdatePowerStatus(const PowerSupplyStatus& status) {
- SetIconImage(GetBatteryImage(status, ICON_DARK));
+ SetIconImage(TrayPower::GetBatteryImage(status, ICON_DARK));
power_status_view_->UpdatePowerStatus(status);
}
@@ -285,14 +110,13 @@ class PowerNotificationView : public TrayNotificationView {
private:
TrayPower* tray_;
- tray::PowerStatusView* power_status_view_;
+ PowerStatusView* power_status_view_;
DISALLOW_COPY_AND_ASSIGN(PowerNotificationView);
};
} // namespace tray
-using tray::PowerStatusView;
using tray::PowerNotificationView;
TrayPower::TrayPower()
@@ -304,6 +128,37 @@ TrayPower::TrayPower()
TrayPower::~TrayPower() {
}
+// static
+gfx::ImageSkia TrayPower::GetBatteryImage(
+ const PowerSupplyStatus& supply_status,
+ IconSet icon_set) {
+ gfx::ImageSkia image;
+ gfx::Image all = ui::ResourceBundle::GetSharedInstance().GetImageNamed(
+ icon_set == ICON_DARK ?
+ IDR_AURA_UBER_TRAY_POWER_SMALL_DARK : IDR_AURA_UBER_TRAY_POWER_SMALL);
+
+ int image_index = 0;
+ if (supply_status.battery_percentage >= 100) {
+ image_index = kNumPowerImages - 1;
+ } else if (!supply_status.battery_is_present) {
+ image_index = kNumPowerImages;
+ } else {
+ double percentage = supply_status.is_calculating_battery_time ? 100.0 :
+ supply_status.battery_percentage;
+ image_index = static_cast<int>(percentage / 100.0 * (kNumPowerImages - 1));
+ image_index = std::max(std::min(image_index, kNumPowerImages - 2), 0);
+ }
+
+ // TODO(mbolohan): Remove the 2px offset when the assets are centered. See
+ // crbug.com/119832.
+ SkIRect region = SkIRect::MakeXYWH(
+ (supply_status.line_power_on ? kBatteryImageWidth : 0) + 2,
+ image_index * kBatteryImageHeight,
+ kBatteryImageWidth - 2, kBatteryImageHeight);
+ all.ToImageSkia()->extractSubset(&image, region);
+ return image;
+}
+
views::View* TrayPower::CreateTrayView(user::LoginStatus status) {
// There may not be enough information when this is created about whether
// there is a battery or not. So always create this, and adjust visibility as
« no previous file with comments | « ash/system/power/tray_power.h ('k') | ash/system/settings/tray_settings.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698