OLD | NEW |
---|---|
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/chromeos/network/tray_network.h" | 5 #include "ash/system/chromeos/network/tray_network.h" |
6 | 6 |
7 #include "ash/shell.h" | 7 #include "ash/shell.h" |
8 #include "ash/system/chromeos/network/network_list_detailed_view_base.h" | 8 #include "ash/system/chromeos/network/network_list_detailed_view_base.h" |
9 #include "ash/system/tray/system_tray.h" | 9 #include "ash/system/tray/system_tray.h" |
10 #include "ash/system/tray/system_tray_delegate.h" | 10 #include "ash/system/tray/system_tray_delegate.h" |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
72 | 72 |
73 MessageMap& messages() { return messages_; } | 73 MessageMap& messages() { return messages_; } |
74 const MessageMap& messages() const { return messages_; } | 74 const MessageMap& messages() const { return messages_; } |
75 | 75 |
76 private: | 76 private: |
77 MessageMap messages_; | 77 MessageMap messages_; |
78 }; | 78 }; |
79 | 79 |
80 class NetworkTrayView : public TrayItemView { | 80 class NetworkTrayView : public TrayItemView { |
81 public: | 81 public: |
82 NetworkTrayView(ColorTheme size, bool tray_icon) | 82 NetworkTrayView(SystemTrayItem* owner, ColorTheme size, bool tray_icon) |
83 : color_theme_(size), tray_icon_(tray_icon) { | 83 : TrayItemView(owner), color_theme_(size), tray_icon_(tray_icon) { |
84 SetLayoutManager( | 84 SetLayoutManager( |
85 new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0)); | 85 new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0)); |
86 | 86 |
87 image_view_ = color_theme_ == DARK ? | 87 image_view_ = color_theme_ == DARK ? |
88 new FixedSizedImageView(0, kTrayPopupItemHeight) : | 88 new FixedSizedImageView(0, kTrayPopupItemHeight) : |
89 new views::ImageView; | 89 new views::ImageView; |
90 AddChildView(image_view_); | 90 AddChildView(image_view_); |
91 | 91 |
92 NetworkIconInfo info; | 92 NetworkIconInfo info; |
93 Shell::GetInstance()->tray_delegate()-> | 93 Shell::GetInstance()->tray_delegate()-> |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
129 SetLabel(info.description); | 129 SetLabel(info.description); |
130 SetAccessibleName(info.description); | 130 SetAccessibleName(info.description); |
131 } | 131 } |
132 | 132 |
133 private: | 133 private: |
134 DISALLOW_COPY_AND_ASSIGN(NetworkDefaultView); | 134 DISALLOW_COPY_AND_ASSIGN(NetworkDefaultView); |
135 }; | 135 }; |
136 | 136 |
137 class NetworkListDetailedView : public NetworkListDetailedViewBase { | 137 class NetworkListDetailedView : public NetworkListDetailedViewBase { |
138 public: | 138 public: |
139 NetworkListDetailedView(user::LoginStatus login, int header_string_id) | 139 NetworkListDetailedView(SystemTrayItem* owner, |
140 : NetworkListDetailedViewBase(login, header_string_id), | 140 user::LoginStatus login, |
141 int header_string_id) | |
142 : NetworkListDetailedViewBase(owner, login, header_string_id), | |
141 airplane_(NULL), | 143 airplane_(NULL), |
142 button_wifi_(NULL), | 144 button_wifi_(NULL), |
143 button_mobile_(NULL), | 145 button_mobile_(NULL), |
144 view_mobile_account_(NULL), | 146 view_mobile_account_(NULL), |
145 setup_mobile_account_(NULL), | 147 setup_mobile_account_(NULL), |
146 other_wifi_(NULL), | 148 other_wifi_(NULL), |
147 turn_on_wifi_(NULL), | 149 turn_on_wifi_(NULL), |
148 other_mobile_(NULL) { | 150 other_mobile_(NULL) { |
149 } | 151 } |
150 | 152 |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
354 views::View* setup_mobile_account_; | 356 views::View* setup_mobile_account_; |
355 TrayPopupLabelButton* other_wifi_; | 357 TrayPopupLabelButton* other_wifi_; |
356 TrayPopupLabelButton* turn_on_wifi_; | 358 TrayPopupLabelButton* turn_on_wifi_; |
357 TrayPopupLabelButton* other_mobile_; | 359 TrayPopupLabelButton* other_mobile_; |
358 | 360 |
359 DISALLOW_COPY_AND_ASSIGN(NetworkListDetailedView); | 361 DISALLOW_COPY_AND_ASSIGN(NetworkListDetailedView); |
360 }; | 362 }; |
361 | 363 |
362 class NetworkWifiDetailedView : public NetworkDetailedView { | 364 class NetworkWifiDetailedView : public NetworkDetailedView { |
363 public: | 365 public: |
364 explicit NetworkWifiDetailedView(bool wifi_enabled) { | 366 NetworkWifiDetailedView(SystemTrayItem* owner, bool wifi_enabled) |
367 : NetworkDetailedView(owner) { | |
msw
2012/11/16 20:09:04
nit: indent one more space.
bartfab (slow)
2012/11/19 17:15:31
Done.
| |
365 SetLayoutManager(new views::BoxLayout(views::BoxLayout::kHorizontal, | 368 SetLayoutManager(new views::BoxLayout(views::BoxLayout::kHorizontal, |
366 kTrayPopupPaddingHorizontal, | 369 kTrayPopupPaddingHorizontal, |
367 10, | 370 10, |
368 kTrayPopupPaddingBetweenItems)); | 371 kTrayPopupPaddingBetweenItems)); |
369 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); | 372 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); |
370 views::ImageView* image = new views::ImageView; | 373 views::ImageView* image = new views::ImageView; |
371 const int image_id = wifi_enabled ? | 374 const int image_id = wifi_enabled ? |
372 IDR_AURA_UBER_TRAY_WIFI_ENABLED : IDR_AURA_UBER_TRAY_WIFI_DISABLED; | 375 IDR_AURA_UBER_TRAY_WIFI_ENABLED : IDR_AURA_UBER_TRAY_WIFI_DISABLED; |
373 image->SetImage(bundle.GetImageNamed(image_id).ToImageSkia()); | 376 image->SetImage(bundle.GetImageNamed(image_id).ToImageSkia()); |
374 AddChildView(image); | 377 AddChildView(image); |
(...skipping 21 matching lines...) Expand all Loading... | |
396 | 399 |
397 virtual void Update() OVERRIDE {} | 400 virtual void Update() OVERRIDE {} |
398 | 401 |
399 private: | 402 private: |
400 DISALLOW_COPY_AND_ASSIGN(NetworkWifiDetailedView); | 403 DISALLOW_COPY_AND_ASSIGN(NetworkWifiDetailedView); |
401 }; | 404 }; |
402 | 405 |
403 class NetworkMessageView : public views::View, | 406 class NetworkMessageView : public views::View, |
404 public views::LinkListener { | 407 public views::LinkListener { |
405 public: | 408 public: |
406 NetworkMessageView(TrayNetwork* tray, | 409 NetworkMessageView(TrayNetwork* owner, |
407 TrayNetwork::MessageType message_type, | 410 TrayNetwork::MessageType message_type, |
408 const NetworkMessages::Message& network_msg) | 411 const NetworkMessages::Message& network_msg) |
409 : tray_(tray), | 412 : owner_(owner), |
410 message_type_(message_type) { | 413 message_type_(message_type) { |
411 SetLayoutManager( | 414 SetLayoutManager( |
412 new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 1)); | 415 new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 1)); |
413 | 416 |
414 if (!network_msg.title.empty()) { | 417 if (!network_msg.title.empty()) { |
415 views::Label* title = new views::Label(network_msg.title); | 418 views::Label* title = new views::Label(network_msg.title); |
416 title->SetHorizontalAlignment(gfx::ALIGN_LEFT); | 419 title->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
417 title->SetFont(title->font().DeriveFont(0, gfx::Font::BOLD)); | 420 title->SetFont(title->font().DeriveFont(0, gfx::Font::BOLD)); |
418 AddChildView(title); | 421 AddChildView(title); |
419 } | 422 } |
(...skipping 17 matching lines...) Expand all Loading... | |
437 AddChildView(link); | 440 AddChildView(link); |
438 } | 441 } |
439 } | 442 } |
440 } | 443 } |
441 | 444 |
442 virtual ~NetworkMessageView() { | 445 virtual ~NetworkMessageView() { |
443 } | 446 } |
444 | 447 |
445 // Overridden from views::LinkListener. | 448 // Overridden from views::LinkListener. |
446 virtual void LinkClicked(views::Link* source, int event_flags) OVERRIDE { | 449 virtual void LinkClicked(views::Link* source, int event_flags) OVERRIDE { |
447 tray_->LinkClicked(message_type_, source->id()); | 450 owner_->LinkClicked(message_type_, source->id()); |
448 } | 451 } |
449 | 452 |
450 TrayNetwork::MessageType message_type() const { return message_type_; } | 453 TrayNetwork::MessageType message_type() const { return message_type_; } |
451 | 454 |
452 private: | 455 private: |
453 TrayNetwork* tray_; | 456 TrayNetwork* owner_; |
454 TrayNetwork::MessageType message_type_; | 457 TrayNetwork::MessageType message_type_; |
455 | 458 |
456 DISALLOW_COPY_AND_ASSIGN(NetworkMessageView); | 459 DISALLOW_COPY_AND_ASSIGN(NetworkMessageView); |
457 }; | 460 }; |
458 | 461 |
459 class NetworkNotificationView : public TrayNotificationView { | 462 class NetworkNotificationView : public TrayNotificationView { |
460 public: | 463 public: |
461 explicit NetworkNotificationView(TrayNetwork* tray) | 464 explicit NetworkNotificationView(TrayNetwork* owner) |
462 : TrayNotificationView(tray, 0) { | 465 : TrayNotificationView(owner, 0) { |
463 CreateMessageView(); | 466 CreateMessageView(); |
464 InitView(network_message_view_); | 467 InitView(network_message_view_); |
465 SetIconImage(*ResourceBundle::GetSharedInstance().GetImageSkiaNamed( | 468 SetIconImage(*ResourceBundle::GetSharedInstance().GetImageSkiaNamed( |
466 GetMessageIcon(network_message_view_->message_type()))); | 469 GetMessageIcon(network_message_view_->message_type()))); |
467 } | 470 } |
468 | 471 |
469 // Overridden from TrayNotificationView. | 472 // Overridden from TrayNotificationView. |
470 virtual void OnClose() OVERRIDE { | 473 virtual void OnClose() OVERRIDE { |
471 tray_network()->ClearNetworkMessage(network_message_view_->message_type()); | 474 tray_network()->ClearNetworkMessage(network_message_view_->message_type()); |
472 } | 475 } |
473 | 476 |
474 virtual void OnClickAction() OVERRIDE { | 477 virtual void OnClickAction() OVERRIDE { |
475 if (network_message_view_->message_type() != | 478 if (network_message_view_->message_type() != |
476 TrayNetwork::MESSAGE_DATA_PROMO) | 479 TrayNetwork::MESSAGE_DATA_PROMO) |
477 tray()->PopupDetailedView(0, true); | 480 owner()->PopupDetailedView(0, true); |
478 } | 481 } |
479 | 482 |
480 void Update() { | 483 void Update() { |
481 CreateMessageView(); | 484 CreateMessageView(); |
482 UpdateViewAndImage(network_message_view_, | 485 UpdateViewAndImage(network_message_view_, |
483 *ResourceBundle::GetSharedInstance().GetImageSkiaNamed( | 486 *ResourceBundle::GetSharedInstance().GetImageSkiaNamed( |
484 GetMessageIcon(network_message_view_->message_type()))); | 487 GetMessageIcon(network_message_view_->message_type()))); |
485 } | 488 } |
486 | 489 |
487 private: | 490 private: |
488 TrayNetwork* tray_network() { | 491 TrayNetwork* tray_network() { |
489 return static_cast<TrayNetwork*>(tray()); | 492 return static_cast<TrayNetwork*>(owner()); |
490 } | 493 } |
491 | 494 |
492 void CreateMessageView() { | 495 void CreateMessageView() { |
493 // Display the first (highest priority) message. | 496 // Display the first (highest priority) message. |
494 CHECK(!tray_network()->messages()->messages().empty()); | 497 CHECK(!tray_network()->messages()->messages().empty()); |
495 NetworkMessages::MessageMap::const_iterator iter = | 498 NetworkMessages::MessageMap::const_iterator iter = |
496 tray_network()->messages()->messages().begin(); | 499 tray_network()->messages()->messages().begin(); |
497 network_message_view_ = | 500 network_message_view_ = |
498 new NetworkMessageView(tray_network(), iter->first, iter->second); | 501 new NetworkMessageView(tray_network(), iter->first, iter->second); |
499 } | 502 } |
500 | 503 |
501 tray::NetworkMessageView* network_message_view_; | 504 tray::NetworkMessageView* network_message_view_; |
502 | 505 |
503 DISALLOW_COPY_AND_ASSIGN(NetworkNotificationView); | 506 DISALLOW_COPY_AND_ASSIGN(NetworkNotificationView); |
504 }; | 507 }; |
505 | 508 |
506 } // namespace tray | 509 } // namespace tray |
507 | 510 |
508 TrayNetwork::TrayNetwork() | 511 TrayNetwork::TrayNetwork(SystemTray* system_tray) |
509 : tray_(NULL), | 512 : SystemTrayItem(system_tray), |
513 tray_(NULL), | |
510 default_(NULL), | 514 default_(NULL), |
511 detailed_(NULL), | 515 detailed_(NULL), |
512 notification_(NULL), | 516 notification_(NULL), |
513 messages_(new tray::NetworkMessages()), | 517 messages_(new tray::NetworkMessages()), |
514 request_wifi_view_(false) { | 518 request_wifi_view_(false) { |
515 } | 519 } |
516 | 520 |
517 TrayNetwork::~TrayNetwork() { | 521 TrayNetwork::~TrayNetwork() { |
518 } | 522 } |
519 | 523 |
520 views::View* TrayNetwork::CreateTrayView(user::LoginStatus status) { | 524 views::View* TrayNetwork::CreateTrayView(user::LoginStatus status) { |
521 CHECK(tray_ == NULL); | 525 CHECK(tray_ == NULL); |
522 tray_ = new tray::NetworkTrayView(tray::LIGHT, true /*tray_icon*/); | 526 tray_ = new tray::NetworkTrayView(this, tray::LIGHT, true /*tray_icon*/); |
523 return tray_; | 527 return tray_; |
524 } | 528 } |
525 | 529 |
526 views::View* TrayNetwork::CreateDefaultView(user::LoginStatus status) { | 530 views::View* TrayNetwork::CreateDefaultView(user::LoginStatus status) { |
527 CHECK(default_ == NULL); | 531 CHECK(default_ == NULL); |
528 default_ = | 532 default_ = |
529 new tray::NetworkDefaultView(this, status != user::LOGGED_IN_LOCKED); | 533 new tray::NetworkDefaultView(this, status != user::LOGGED_IN_LOCKED); |
530 return default_; | 534 return default_; |
531 } | 535 } |
532 | 536 |
533 views::View* TrayNetwork::CreateDetailedView(user::LoginStatus status) { | 537 views::View* TrayNetwork::CreateDetailedView(user::LoginStatus status) { |
534 CHECK(detailed_ == NULL); | 538 CHECK(detailed_ == NULL); |
535 // Clear any notifications when showing the detailed view. | 539 // Clear any notifications when showing the detailed view. |
536 messages_->messages().clear(); | 540 messages_->messages().clear(); |
537 HideNotificationView(); | 541 HideNotificationView(); |
538 if (request_wifi_view_) { | 542 if (request_wifi_view_) { |
539 SystemTrayDelegate* delegate = Shell::GetInstance()->tray_delegate(); | 543 SystemTrayDelegate* delegate = Shell::GetInstance()->tray_delegate(); |
540 // The Wi-Fi state is not toggled yet at this point. | 544 // The Wi-Fi state is not toggled yet at this point. |
541 detailed_ = new tray::NetworkWifiDetailedView(!delegate->GetWifiEnabled()); | 545 detailed_ = new tray::NetworkWifiDetailedView(this, |
546 !delegate->GetWifiEnabled()); | |
542 request_wifi_view_ = false; | 547 request_wifi_view_ = false; |
543 } else { | 548 } else { |
544 detailed_ = new tray::NetworkListDetailedView( | 549 detailed_ = new tray::NetworkListDetailedView( |
545 status, IDS_ASH_STATUS_TRAY_NETWORK); | 550 this, status, IDS_ASH_STATUS_TRAY_NETWORK); |
546 detailed_->Init(); | 551 detailed_->Init(); |
547 } | 552 } |
548 return detailed_; | 553 return detailed_; |
549 } | 554 } |
550 | 555 |
551 views::View* TrayNetwork::CreateNotificationView(user::LoginStatus status) { | 556 views::View* TrayNetwork::CreateNotificationView(user::LoginStatus status) { |
552 CHECK(notification_ == NULL); | 557 CHECK(notification_ == NULL); |
553 if (messages_->messages().empty()) | 558 if (messages_->messages().empty()) |
554 return NULL; // Message has already been cleared. | 559 return NULL; // Message has already been cleared. |
555 notification_ = new tray::NetworkNotificationView(this); | 560 notification_ = new tray::NetworkNotificationView(this); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
623 | 628 |
624 void TrayNetwork::LinkClicked(MessageType message_type, int link_id) { | 629 void TrayNetwork::LinkClicked(MessageType message_type, int link_id) { |
625 tray::NetworkMessages::MessageMap::const_iterator iter = | 630 tray::NetworkMessages::MessageMap::const_iterator iter = |
626 messages()->messages().find(message_type); | 631 messages()->messages().find(message_type); |
627 if (iter != messages()->messages().end() && iter->second.delegate) | 632 if (iter != messages()->messages().end() && iter->second.delegate) |
628 iter->second.delegate->NotificationLinkClicked(link_id); | 633 iter->second.delegate->NotificationLinkClicked(link_id); |
629 } | 634 } |
630 | 635 |
631 } // namespace internal | 636 } // namespace internal |
632 } // namespace ash | 637 } // namespace ash |
OLD | NEW |