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

Side by Side Diff: chrome/browser/chromeos/status/power_menu_button.cc

Issue 8536048: Make power button in status view invisible until we are sure battery is supported on device. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: a Created 9 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/browser/chromeos/status/power_menu_button_browsertest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "chrome/browser/chromeos/status/power_menu_button.h" 5 #include "chrome/browser/chromeos/status/power_menu_button.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/string_number_conversions.h" 10 #include "base/string_number_conversions.h"
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 } else { 109 } else {
110 battery_index = static_cast<int> ( 110 battery_index = static_cast<int> (
111 battery_percentage / 100.0 * 111 battery_percentage / 100.0 *
112 nextafter(static_cast<double>(kNumPowerImages - 1), 0)); 112 nextafter(static_cast<double>(kNumPowerImages - 1), 0));
113 battery_index = 113 battery_index =
114 std::max(std::min(battery_index, kNumPowerImages - 2), 0); 114 std::max(std::min(battery_index, kNumPowerImages - 2), 0);
115 } 115 }
116 return GetImage(size, type, battery_index); 116 return GetImage(size, type, battery_index);
117 } 117 }
118 118
119 SkBitmap GetMissingImage(ImageSize size) {
120 return GetImage(size, DISCHARGING, kNumPowerImages);
121 }
122
123 SkBitmap GetUnknownImage(ImageSize size) { 119 SkBitmap GetUnknownImage(ImageSize size) {
124 return GetImage(size, CHARGING, kNumPowerImages); 120 return GetImage(size, CHARGING, kNumPowerImages);
125 } 121 }
126 122
127 class BatteryIconView : public views::View { 123 class BatteryIconView : public views::View {
128 public: 124 public:
129 BatteryIconView() 125 BatteryIconView()
130 : battery_percentage_(0), 126 : battery_percentage_(0),
131 battery_is_present_(false), 127 battery_is_present_(false),
132 line_power_on_(false), 128 line_power_on_(false),
(...skipping 17 matching lines...) Expand all
150 } 146 }
151 147
152 void set_line_power_on(bool line_power_on) { 148 void set_line_power_on(bool line_power_on) {
153 line_power_on_ = line_power_on; 149 line_power_on_ = line_power_on;
154 SchedulePaint(); 150 SchedulePaint();
155 } 151 }
156 152
157 protected: 153 protected:
158 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE { 154 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE {
159 SkBitmap image; 155 SkBitmap image;
160 if (!battery_is_present_) { 156 if (battery_is_present_) {
161 image = GetMissingImage(LARGE);
162 } else {
163 image = GetImageWithPercentage(LARGE, 157 image = GetImageWithPercentage(LARGE,
164 line_power_on_ ? CHARGING : DISCHARGING, 158 line_power_on_ ? CHARGING : DISCHARGING,
165 battery_percentage_); 159 battery_percentage_);
160 } else {
161 NOTREACHED();
162 return;
166 } 163 }
167 const int image_x = 0; 164 const int image_x = 0;
168 const int image_y = (height() - image.height()) / 2; 165 const int image_y = (height() - image.height()) / 2;
169 canvas->DrawBitmapInt(image, image_x, image_y); 166 canvas->DrawBitmapInt(image, image_x, image_y);
170 167
171 if (battery_is_present_ && (battery_percentage_ < 100 || !line_power_on_)) { 168 if (battery_is_present_ && (battery_percentage_ < 100 || !line_power_on_)) {
172 const string16 text = UTF8ToUTF16(base::StringPrintf( 169 const string16 text = UTF8ToUTF16(base::StringPrintf(
173 "%d%%", static_cast<int>(battery_percentage_))); 170 "%d%%", static_cast<int>(battery_percentage_)));
174 const int text_h = percentage_font_.GetHeight(); 171 const int text_h = percentage_font_.GetHeight();
175 const int text_y = ((height() - text_h) / 2); 172 const int text_y = ((height() - text_h) / 2);
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 UpdateIconAndLabelInfo(); 311 UpdateIconAndLabelInfo();
315 } 312 }
316 313
317 //////////////////////////////////////////////////////////////////////////////// 314 ////////////////////////////////////////////////////////////////////////////////
318 // PowerMenuButton, StatusAreaButton implementation: 315 // PowerMenuButton, StatusAreaButton implementation:
319 316
320 void PowerMenuButton::UpdateIconAndLabelInfo() { 317 void PowerMenuButton::UpdateIconAndLabelInfo() {
321 battery_is_present_ = power_status_.battery_is_present; 318 battery_is_present_ = power_status_.battery_is_present;
322 line_power_on_ = power_status_.line_power_on; 319 line_power_on_ = power_status_.line_power_on;
323 320
321 bool should_be_visible = battery_is_present_;
322 if (should_be_visible != IsVisible())
323 SetVisible(should_be_visible);
324
325 if (!should_be_visible)
326 return;
327
324 // If fully charged, always show 100% even if internal number is a bit less. 328 // If fully charged, always show 100% even if internal number is a bit less.
325 if (power_status_.battery_is_full) 329 if (power_status_.battery_is_full)
326 battery_percentage_ = 100.0; 330 battery_percentage_ = 100.0;
327 else 331 else
328 battery_percentage_ = power_status_.battery_percentage; 332 battery_percentage_ = power_status_.battery_percentage;
329 333
330 UpdateBatteryTime(&battery_time_to_full_, 334 UpdateBatteryTime(&battery_time_to_full_,
331 TimeDelta::FromSeconds( 335 TimeDelta::FromSeconds(
332 power_status_.battery_seconds_to_full)); 336 power_status_.battery_seconds_to_full));
333 UpdateBatteryTime(&battery_time_to_empty_, 337 UpdateBatteryTime(&battery_time_to_empty_,
334 TimeDelta::FromSeconds( 338 TimeDelta::FromSeconds(
335 power_status_.battery_seconds_to_empty)); 339 power_status_.battery_seconds_to_empty));
336 340
337 string16 tooltip_text; 341 SetIcon(GetImageWithPercentage(
338 if (!battery_is_present_) { 342 SMALL, line_power_on_ ? CHARGING : DISCHARGING, battery_percentage_));
339 SetIcon(GetMissingImage(SMALL)); 343 const int message_id = line_power_on_ ?
340 tooltip_text = l10n_util::GetStringUTF16(IDS_STATUSBAR_NO_BATTERY); 344 IDS_STATUSBAR_BATTERY_CHARGING_PERCENTAGE :
DaveMoore 2011/11/16 23:35:27 Please remove the string too
341 } else { 345 IDS_STATUSBAR_BATTERY_USING_PERCENTAGE;
342 SetIcon(GetImageWithPercentage( 346 string16 tooltip_text = l10n_util::GetStringFUTF16(
343 SMALL, line_power_on_ ? CHARGING : DISCHARGING, battery_percentage_)); 347 message_id, base::IntToString16(static_cast<int>(battery_percentage_)));
344 const int message_id = line_power_on_ ?
345 IDS_STATUSBAR_BATTERY_CHARGING_PERCENTAGE :
346 IDS_STATUSBAR_BATTERY_USING_PERCENTAGE;
347 tooltip_text = l10n_util::GetStringFUTF16(
348 message_id, base::IntToString16(static_cast<int>(battery_percentage_)));
349 }
350 SetTooltipText(tooltip_text); 348 SetTooltipText(tooltip_text);
351 SetAccessibleName(tooltip_text); 349 SetAccessibleName(tooltip_text);
352 SchedulePaint(); 350 SchedulePaint();
353 UpdateStatusView(); 351 UpdateStatusView();
354 } 352 }
355 353
356 void PowerMenuButton::UpdateStatusView() { 354 void PowerMenuButton::UpdateStatusView() {
357 if (status_) { 355 if (status_) {
358 string16 charging_text; 356 string16 charging_text;
359 if (battery_is_present_) { 357 if (battery_is_present_) {
(...skipping 20 matching lines...) Expand all
380 // If previous is 0, then it either was never set (initial condition) 378 // If previous is 0, then it either was never set (initial condition)
381 // or got down to 0. 379 // or got down to 0.
382 if (*previous == TimeDelta::FromMicroseconds(kInitialMS) || 380 if (*previous == TimeDelta::FromMicroseconds(kInitialMS) ||
383 diff < kMinDiff || 381 diff < kMinDiff ||
384 diff > kMaxDiff) { 382 diff > kMaxDiff) {
385 *previous = current; 383 *previous = current;
386 } 384 }
387 } 385 }
388 386
389 } // namespace chromeos 387 } // namespace chromeos
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/chromeos/status/power_menu_button_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698