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

Side by Side Diff: ash/system/power/tray_power.cc

Issue 10269017: Remove scoped_ptr for system tray views (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 7 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 | « ash/system/power/tray_power.h ('k') | ash/system/tray/system_tray_item.h » ('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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/system/power/tray_power.h" 5 #include "ash/system/power/tray_power.h"
6 6
7 #include "ash/shell.h" 7 #include "ash/shell.h"
8 #include "ash/system/date/date_view.h" 8 #include "ash/system/date/date_view.h"
9 #include "ash/system/power/power_supply_status.h" 9 #include "ash/system/power/power_supply_status.h"
10 #include "ash/system/tray/system_tray_delegate.h" 10 #include "ash/system/tray/system_tray_delegate.h"
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 views::Label* time_label_; 183 views::Label* time_label_;
184 184
185 PowerSupplyStatus supply_status_; 185 PowerSupplyStatus supply_status_;
186 186
187 DISALLOW_COPY_AND_ASSIGN(PowerPopupView); 187 DISALLOW_COPY_AND_ASSIGN(PowerPopupView);
188 }; 188 };
189 189
190 } // namespace tray 190 } // namespace tray
191 191
192 TrayPower::TrayPower() 192 TrayPower::TrayPower()
193 : power_(NULL), 193 : date_(NULL),
194 power_(NULL),
194 power_tray_(NULL) { 195 power_tray_(NULL) {
195 } 196 }
196 197
197 TrayPower::~TrayPower() { 198 TrayPower::~TrayPower() {
198 } 199 }
199 200
200 views::View* TrayPower::CreateTrayView(user::LoginStatus status) { 201 views::View* TrayPower::CreateTrayView(user::LoginStatus status) {
201 // There may not be enough information when this is created about whether 202 // There may not be enough information when this is created about whether
202 // there is a battery or not. So always create this, and adjust visibility as 203 // there is a battery or not. So always create this, and adjust visibility as
203 // necessary. 204 // necessary.
204 PowerSupplyStatus power_status = 205 PowerSupplyStatus power_status =
205 ash::Shell::GetInstance()->tray_delegate()->GetPowerSupplyStatus(); 206 ash::Shell::GetInstance()->tray_delegate()->GetPowerSupplyStatus();
206 power_tray_.reset(new tray::PowerTrayView()); 207 CHECK(power_tray_ == NULL);
208 power_tray_ = new tray::PowerTrayView();
207 power_tray_->UpdatePowerStatus(power_status); 209 power_tray_->UpdatePowerStatus(power_status);
208 return power_tray_.get(); 210 return power_tray_;
209 } 211 }
210 212
211 views::View* TrayPower::CreateDefaultView(user::LoginStatus status) { 213 views::View* TrayPower::CreateDefaultView(user::LoginStatus status) {
212 date_.reset(new tray::DateView()); 214 CHECK(date_ == NULL);
215 date_ = new tray::DateView();
213 216
214 views::View* container = new views::View; 217 views::View* container = new views::View;
215 views::BoxLayout* layout = new views::BoxLayout(views::BoxLayout::kHorizontal, 218 views::BoxLayout* layout = new views::BoxLayout(views::BoxLayout::kHorizontal,
216 0, 0, 0); 219 0, 0, 0);
217 220
218 layout->set_spread_blank_space(true); 221 layout->set_spread_blank_space(true);
219 container->SetLayoutManager(layout); 222 container->SetLayoutManager(layout);
220 container->set_background(views::Background::CreateSolidBackground( 223 container->set_background(views::Background::CreateSolidBackground(
221 kHeaderBackgroundColor)); 224 kHeaderBackgroundColor));
222 HoverHighlightView* view = new HoverHighlightView(NULL); 225 HoverHighlightView* view = new HoverHighlightView(NULL);
223 view->SetLayoutManager(new views::FillLayout); 226 view->SetLayoutManager(new views::FillLayout);
224 view->AddChildView(date_.get()); 227 view->AddChildView(date_);
225 date_->set_border(views::Border::CreateEmptyBorder(kPaddingVertical, 228 date_->set_border(views::Border::CreateEmptyBorder(kPaddingVertical,
226 kTrayPopupPaddingHorizontal, 229 kTrayPopupPaddingHorizontal,
227 kPaddingVertical, 230 kPaddingVertical,
228 kTrayPopupPaddingHorizontal)); 231 kTrayPopupPaddingHorizontal));
229 container->AddChildView(view); 232 container->AddChildView(view);
230 view->set_focusable(false); 233 view->set_focusable(false);
231 234
232 if (status != user::LOGGED_IN_NONE && status != user::LOGGED_IN_LOCKED) { 235 if (status != user::LOGGED_IN_NONE && status != user::LOGGED_IN_LOCKED) {
233 date_->SetActionable(true); 236 date_->SetActionable(true);
234 view->set_highlight_color(kHeaderHoverBackgroundColor); 237 view->set_highlight_color(kHeaderHoverBackgroundColor);
235 } else { 238 } else {
236 view->set_highlight_color(SkColorSetARGB(0, 0, 0, 0)); 239 view->set_highlight_color(SkColorSetARGB(0, 0, 0, 0));
237 } 240 }
238 241
239 PowerSupplyStatus power_status = 242 PowerSupplyStatus power_status =
240 ash::Shell::GetInstance()->tray_delegate()->GetPowerSupplyStatus(); 243 ash::Shell::GetInstance()->tray_delegate()->GetPowerSupplyStatus();
241 if (power_status.battery_is_present) { 244 if (power_status.battery_is_present) {
242 power_.reset(new tray::PowerPopupView()); 245 CHECK(power_ == NULL);
246 power_ = new tray::PowerPopupView();
243 power_->UpdatePowerStatus(power_status); 247 power_->UpdatePowerStatus(power_status);
244 power_->set_border(views::Border::CreateSolidSidedBorder( 248 power_->set_border(views::Border::CreateSolidSidedBorder(
245 kPaddingVertical, kTrayPopupPaddingHorizontal, 249 kPaddingVertical, kTrayPopupPaddingHorizontal,
246 kPaddingVertical, kTrayPopupPaddingHorizontal, 250 kPaddingVertical, kTrayPopupPaddingHorizontal,
247 SkColorSetARGB(0, 0, 0, 0))); 251 SkColorSetARGB(0, 0, 0, 0)));
248 container->AddChildView(power_.get()); 252 container->AddChildView(power_);
249 } 253 }
250 ash::Shell::GetInstance()->tray_delegate()->RequestStatusUpdate(); 254 ash::Shell::GetInstance()->tray_delegate()->RequestStatusUpdate();
251 255
252 return container; 256 return container;
253 } 257 }
254 258
255 views::View* TrayPower::CreateDetailedView(user::LoginStatus status) { 259 views::View* TrayPower::CreateDetailedView(user::LoginStatus status) {
256 return NULL; 260 return NULL;
257 } 261 }
258 262
259 void TrayPower::DestroyTrayView() { 263 void TrayPower::DestroyTrayView() {
260 power_tray_.reset(); 264 power_tray_ = NULL;
261 } 265 }
262 266
263 void TrayPower::DestroyDefaultView() { 267 void TrayPower::DestroyDefaultView() {
264 date_.reset(); 268 date_ = NULL;
265 power_.reset(); 269 power_ = NULL;
266 } 270 }
267 271
268 void TrayPower::DestroyDetailedView() { 272 void TrayPower::DestroyDetailedView() {
269 } 273 }
270 274
271 void TrayPower::UpdateAfterLoginStatusChange(user::LoginStatus status) { 275 void TrayPower::UpdateAfterLoginStatusChange(user::LoginStatus status) {
272 } 276 }
273 277
274 void TrayPower::OnPowerStatusChanged(const PowerSupplyStatus& status) { 278 void TrayPower::OnPowerStatusChanged(const PowerSupplyStatus& status) {
275 if (power_tray_.get()) 279 if (power_tray_)
276 power_tray_->UpdatePowerStatus(status); 280 power_tray_->UpdatePowerStatus(status);
277 if (power_.get()) 281 if (power_)
278 power_->UpdatePowerStatus(status); 282 power_->UpdatePowerStatus(status);
279 } 283 }
280 284
281 } // namespace internal 285 } // namespace internal
282 } // namespace ash 286 } // namespace ash
OLDNEW
« no previous file with comments | « ash/system/power/tray_power.h ('k') | ash/system/tray/system_tray_item.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698