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

Side by Side Diff: athena/system/status_icon_container_view.cc

Issue 483033003: [Athena] Add status icons and system time to the centered home card (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 3 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « athena/system/status_icon_container_view.h ('k') | athena/system/system_ui_impl.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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "athena/system/status_icon_container_view.h" 5 #include "athena/system/status_icon_container_view.h"
6 6
7 #include "athena/resources/athena_resources.h" 7 #include "athena/resources/athena_resources.h"
8 #include "athena/system/network_selector.h" 8 #include "athena/system/network_selector.h"
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 13 matching lines...) Expand all
24 #include "ui/gfx/image/image.h" 24 #include "ui/gfx/image/image.h"
25 #include "ui/gfx/image/image_skia.h" 25 #include "ui/gfx/image/image_skia.h"
26 #include "ui/gfx/image/image_skia_operations.h" 26 #include "ui/gfx/image/image_skia_operations.h"
27 #include "ui/views/controls/image_view.h" 27 #include "ui/views/controls/image_view.h"
28 #include "ui/views/controls/label.h" 28 #include "ui/views/controls/label.h"
29 #include "ui/views/layout/box_layout.h" 29 #include "ui/views/layout/box_layout.h"
30 30
31 namespace athena { 31 namespace athena {
32 namespace { 32 namespace {
33 33
34 views::Label* CreateLabel(const std::string& text) { 34 views::Label* CreateLabel(SystemUI::ColorScheme color_scheme,
35 const std::string& text) {
35 views::Label* label = new views::Label(base::UTF8ToUTF16(text)); 36 views::Label* label = new views::Label(base::UTF8ToUTF16(text));
36 label->SetEnabledColor(SK_ColorWHITE); 37 label->SetEnabledColor((color_scheme == SystemUI::COLOR_SCHEME_LIGHT)
38 ? SK_ColorWHITE
39 : SK_ColorDKGRAY);
37 label->SetAutoColorReadabilityEnabled(false); 40 label->SetAutoColorReadabilityEnabled(false);
41 label->SetSubpixelRenderingEnabled(false);
38 label->SetFontList(gfx::FontList().DeriveWithStyle(gfx::Font::BOLD)); 42 label->SetFontList(gfx::FontList().DeriveWithStyle(gfx::Font::BOLD));
39 return label; 43 return label;
40 } 44 }
41 45
42 } // namespace 46 } // namespace
43 47
44 class StatusIconContainerView::PowerStatus 48 class StatusIconContainerView::PowerStatus
45 : public chromeos::PowerManagerClient::Observer { 49 : public chromeos::PowerManagerClient::Observer {
46 public: 50 public:
47 explicit PowerStatus(views::ImageView* icon) : icon_(icon) { 51 PowerStatus(SystemUI::ColorScheme color_scheme,
52 views::ImageView* icon)
53 : color_scheme_(color_scheme),
54 icon_(icon) {
48 chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver( 55 chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver(
49 this); 56 this);
50 chromeos::DBusThreadManager::Get() 57 chromeos::DBusThreadManager::Get()
51 ->GetPowerManagerClient() 58 ->GetPowerManagerClient()
52 ->RequestStatusUpdate(); 59 ->RequestStatusUpdate();
53 } 60 }
54 61
55 virtual ~PowerStatus() { 62 virtual ~PowerStatus() {
56 chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->RemoveObserver( 63 chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->RemoveObserver(
57 this); 64 this);
58 } 65 }
59 66
60 private: 67 private:
61 const gfx::ImageSkia GetPowerIcon( 68 const gfx::ImageSkia GetPowerIcon(
62 const power_manager::PowerSupplyProperties& proto) const { 69 const power_manager::PowerSupplyProperties& proto) const {
63 // Width and height of battery images. 70 // Width and height of battery images.
64 const int kBatteryImageHeight = 25; 71 const int kBatteryImageHeight = 25;
65 const int kBatteryImageWidth = 25; 72 const int kBatteryImageWidth = 25;
66 73
67 // Number of different power states. 74 // Number of different power states.
68 const int kNumPowerImages = 15; 75 const int kNumPowerImages = 15;
69 76
70 gfx::Image all = ui::ResourceBundle::GetSharedInstance().GetImageNamed( 77 gfx::Image all = ui::ResourceBundle::GetSharedInstance().GetImageNamed(
71 IDR_AURA_UBER_TRAY_POWER_SMALL); 78 (color_scheme_ == SystemUI::COLOR_SCHEME_LIGHT)
79 ? IDR_AURA_UBER_TRAY_POWER_SMALL
80 : IDR_AURA_UBER_TRAY_POWER_SMALL_DARK);
72 int horiz_offset = IsCharging(proto) ? 1 : 0; 81 int horiz_offset = IsCharging(proto) ? 1 : 0;
73 int vert_offset = -1; 82 int vert_offset = -1;
74 if (proto.battery_percent() >= 100) { 83 if (proto.battery_percent() >= 100) {
75 vert_offset = kNumPowerImages - 1; 84 vert_offset = kNumPowerImages - 1;
76 } else { 85 } else {
77 vert_offset = static_cast<int>((kNumPowerImages - 1) * 86 vert_offset = static_cast<int>((kNumPowerImages - 1) *
78 proto.battery_percent() / 100); 87 proto.battery_percent() / 100);
79 vert_offset = std::max(std::min(vert_offset, kNumPowerImages - 2), 0); 88 vert_offset = std::max(std::min(vert_offset, kNumPowerImages - 2), 0);
80 } 89 }
81 gfx::Rect region(horiz_offset * kBatteryImageWidth, 90 gfx::Rect region(horiz_offset * kBatteryImageWidth,
82 vert_offset * kBatteryImageHeight, 91 vert_offset * kBatteryImageHeight,
83 kBatteryImageWidth, 92 kBatteryImageWidth,
84 kBatteryImageHeight); 93 kBatteryImageHeight);
85 return gfx::ImageSkiaOperations::ExtractSubset(*all.ToImageSkia(), region); 94 return gfx::ImageSkiaOperations::ExtractSubset(*all.ToImageSkia(), region);
86 } 95 }
87 96
88 bool IsCharging(const power_manager::PowerSupplyProperties& proto) const { 97 bool IsCharging(const power_manager::PowerSupplyProperties& proto) const {
89 return proto.external_power() != 98 return proto.external_power() !=
90 power_manager::PowerSupplyProperties_ExternalPower_DISCONNECTED; 99 power_manager::PowerSupplyProperties_ExternalPower_DISCONNECTED;
91 } 100 }
92 101
93 // chromeos::PowerManagerClient::Observer: 102 // chromeos::PowerManagerClient::Observer:
94 virtual void PowerChanged( 103 virtual void PowerChanged(
95 const power_manager::PowerSupplyProperties& proto) OVERRIDE { 104 const power_manager::PowerSupplyProperties& proto) OVERRIDE {
96 icon_->SetImage(GetPowerIcon(proto)); 105 icon_->SetImage(GetPowerIcon(proto));
97 } 106 }
98 107
108 SystemUI::ColorScheme color_scheme_;
99 views::ImageView* icon_; 109 views::ImageView* icon_;
100 110
101 DISALLOW_COPY_AND_ASSIGN(PowerStatus); 111 DISALLOW_COPY_AND_ASSIGN(PowerStatus);
102 }; 112 };
103 113
104 class StatusIconContainerView::NetworkStatus 114 class StatusIconContainerView::NetworkStatus
105 : public chromeos::NetworkStateHandlerObserver { 115 : public chromeos::NetworkStateHandlerObserver {
106 public: 116 public:
107 explicit NetworkStatus(views::Label* label) : label_(label) { 117 explicit NetworkStatus(views::Label* label) : label_(label) {
108 chromeos::NetworkStateHandler* handler = 118 chromeos::NetworkStateHandler* handler =
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 }; 165 };
156 166
157 void StartUpdateCallback( 167 void StartUpdateCallback(
158 chromeos::UpdateEngineClient::UpdateCheckResult result) { 168 chromeos::UpdateEngineClient::UpdateCheckResult result) {
159 VLOG(1) << "Callback from RequestUpdateCheck, result " << result; 169 VLOG(1) << "Callback from RequestUpdateCheck, result " << result;
160 } 170 }
161 171
162 class StatusIconContainerView::UpdateStatus 172 class StatusIconContainerView::UpdateStatus
163 : public chromeos::UpdateEngineClient::Observer { 173 : public chromeos::UpdateEngineClient::Observer {
164 public: 174 public:
165 explicit UpdateStatus(views::ImageView* icon) : icon_(icon) { 175 UpdateStatus(SystemUI::ColorScheme color_scheme, views::ImageView* icon)
176 : color_scheme_(color_scheme),
177 icon_(icon) {
166 chromeos::DBusThreadManager::Get()->GetUpdateEngineClient()->AddObserver( 178 chromeos::DBusThreadManager::Get()->GetUpdateEngineClient()->AddObserver(
167 this); 179 this);
168 chromeos::DBusThreadManager::Get()->GetUpdateEngineClient()-> 180 chromeos::DBusThreadManager::Get()->GetUpdateEngineClient()->
169 RequestUpdateCheck(base::Bind(StartUpdateCallback)); 181 RequestUpdateCheck(base::Bind(StartUpdateCallback));
170 } 182 }
171 183
172 virtual ~UpdateStatus() { 184 virtual ~UpdateStatus() {
173 chromeos::DBusThreadManager::Get()->GetUpdateEngineClient()->RemoveObserver( 185 chromeos::DBusThreadManager::Get()->GetUpdateEngineClient()->RemoveObserver(
174 this); 186 this);
175 } 187 }
176 188
177 // chromeos::UpdateEngineClient::Observer: 189 // chromeos::UpdateEngineClient::Observer:
178 virtual void UpdateStatusChanged( 190 virtual void UpdateStatusChanged(
179 const chromeos::UpdateEngineClient::Status& status) OVERRIDE { 191 const chromeos::UpdateEngineClient::Status& status) OVERRIDE {
180 if (status.status != 192 if (status.status !=
181 chromeos::UpdateEngineClient::UPDATE_STATUS_UPDATED_NEED_REBOOT) { 193 chromeos::UpdateEngineClient::UPDATE_STATUS_UPDATED_NEED_REBOOT) {
182 return; 194 return;
183 } 195 }
184 icon_->SetImage(ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed( 196 int image_id = (color_scheme_ == SystemUI::COLOR_SCHEME_LIGHT)
185 IDR_AURA_UBER_TRAY_UPDATE)); 197 ? IDR_AURA_UBER_TRAY_UPDATE
198 : IDR_AURA_UBER_TRAY_UPDATE_DARK;
199 icon_->SetImage(
200 ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(image_id));
186 } 201 }
187 202
188 private: 203 private:
204 SystemUI::ColorScheme color_scheme_;
189 views::ImageView* icon_; 205 views::ImageView* icon_;
190 206
191 DISALLOW_COPY_AND_ASSIGN(UpdateStatus); 207 DISALLOW_COPY_AND_ASSIGN(UpdateStatus);
192 }; 208 };
193 209
194 StatusIconContainerView::StatusIconContainerView( 210 StatusIconContainerView::StatusIconContainerView(
211 SystemUI::ColorScheme color_scheme,
195 aura::Window* system_modal_container) 212 aura::Window* system_modal_container)
196 : system_modal_container_(system_modal_container) { 213 : system_modal_container_(system_modal_container) {
197 const int kHorizontalSpacing = 10; 214 const int kHorizontalSpacing = 10;
198 const int kVerticalSpacing = 3; 215 const int kVerticalSpacing = 3;
199 const int kBetweenChildSpacing = 10; 216 const int kBetweenChildSpacing = 10;
200 SetLayoutManager(new views::BoxLayout(views::BoxLayout::kHorizontal, 217 SetLayoutManager(new views::BoxLayout(views::BoxLayout::kHorizontal,
201 kHorizontalSpacing, 218 kHorizontalSpacing,
202 kVerticalSpacing, 219 kVerticalSpacing,
203 kBetweenChildSpacing)); 220 kBetweenChildSpacing));
204 221
205 std::string version_text = 222 std::string version_text =
206 base::StringPrintf("%s (Build %s)", PRODUCT_VERSION, LAST_CHANGE); 223 base::StringPrintf("%s (Build %s)", PRODUCT_VERSION, LAST_CHANGE);
207 AddChildView(CreateLabel(version_text)); 224 AddChildView(CreateLabel(color_scheme, version_text));
208 225
209 AddChildView(CreateLabel("Network:")); 226 AddChildView(CreateLabel(color_scheme, "Network:"));
210 views::Label* network_label = CreateLabel(std::string()); 227 views::Label* network_label = CreateLabel(color_scheme, std::string());
211 AddChildView(network_label); 228 AddChildView(network_label);
212 network_status_.reset(new NetworkStatus(network_label)); 229 network_status_.reset(new NetworkStatus(network_label));
213 230
214 views::ImageView* battery_view = new views::ImageView(); 231 views::ImageView* battery_view = new views::ImageView();
215 AddChildView(battery_view); 232 AddChildView(battery_view);
216 power_status_.reset(new PowerStatus(battery_view)); 233 power_status_.reset(new PowerStatus(color_scheme, battery_view));
217 234
218 views::ImageView* update_view = new views::ImageView(); 235 views::ImageView* update_view = new views::ImageView();
219 AddChildView(update_view); 236 AddChildView(update_view);
220 update_status_.reset(new UpdateStatus(update_view)); 237 update_status_.reset(new UpdateStatus(color_scheme, update_view));
221 } 238 }
222 239
223 StatusIconContainerView::~StatusIconContainerView() { 240 StatusIconContainerView::~StatusIconContainerView() {
224 } 241 }
225 242
226 bool StatusIconContainerView::OnMousePressed(const ui::MouseEvent& event) { 243 bool StatusIconContainerView::OnMousePressed(const ui::MouseEvent& event) {
227 CreateNetworkSelector(system_modal_container_); 244 CreateNetworkSelector(system_modal_container_);
228 return true; 245 return true;
229 } 246 }
230 247
231 void StatusIconContainerView::OnGestureEvent(ui::GestureEvent* event) { 248 void StatusIconContainerView::OnGestureEvent(ui::GestureEvent* event) {
232 if (event->type() == ui::ET_GESTURE_TAP) { 249 if (event->type() == ui::ET_GESTURE_TAP) {
233 CreateNetworkSelector(system_modal_container_); 250 CreateNetworkSelector(system_modal_container_);
234 event->SetHandled(); 251 event->SetHandled();
235 } 252 }
236 } 253 }
237 254
238 void StatusIconContainerView::ChildPreferredSizeChanged(views::View* child) { 255 void StatusIconContainerView::ChildPreferredSizeChanged(views::View* child) {
239 PreferredSizeChanged(); 256 PreferredSizeChanged();
240 } 257 }
241 258
242 } // namespace athena 259 } // namespace athena
OLDNEW
« no previous file with comments | « athena/system/status_icon_container_view.h ('k') | athena/system/system_ui_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698