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 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 | 81 |
82 MessageMap& messages() { return messages_; } | 82 MessageMap& messages() { return messages_; } |
83 const MessageMap& messages() const { return messages_; } | 83 const MessageMap& messages() const { return messages_; } |
84 | 84 |
85 private: | 85 private: |
86 MessageMap messages_; | 86 MessageMap messages_; |
87 }; | 87 }; |
88 | 88 |
89 class NetworkTrayView : public TrayItemView { | 89 class NetworkTrayView : public TrayItemView { |
90 public: | 90 public: |
91 NetworkTrayView(ColorTheme size, bool tray_icon) | 91 NetworkTrayView(SystemTrayItem* owner, ColorTheme size, bool tray_icon) |
92 : color_theme_(size), tray_icon_(tray_icon) { | 92 : TrayItemView(owner), color_theme_(size), tray_icon_(tray_icon) { |
93 SetLayoutManager( | 93 SetLayoutManager( |
94 new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0)); | 94 new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0)); |
95 | 95 |
96 image_view_ = color_theme_ == DARK ? | 96 image_view_ = color_theme_ == DARK ? |
97 new FixedSizedImageView(0, kTrayPopupItemHeight) : | 97 new FixedSizedImageView(0, kTrayPopupItemHeight) : |
98 new views::ImageView; | 98 new views::ImageView; |
99 AddChildView(image_view_); | 99 AddChildView(image_view_); |
100 | 100 |
101 NetworkIconInfo info; | 101 NetworkIconInfo info; |
102 Shell::GetInstance()->tray_delegate()-> | 102 Shell::GetInstance()->tray_delegate()-> |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 SetLabel(info.description); | 138 SetLabel(info.description); |
139 SetAccessibleName(info.description); | 139 SetAccessibleName(info.description); |
140 } | 140 } |
141 | 141 |
142 private: | 142 private: |
143 DISALLOW_COPY_AND_ASSIGN(NetworkDefaultView); | 143 DISALLOW_COPY_AND_ASSIGN(NetworkDefaultView); |
144 }; | 144 }; |
145 | 145 |
146 class NetworkListDetailedView : public NetworkListDetailedViewBase { | 146 class NetworkListDetailedView : public NetworkListDetailedViewBase { |
147 public: | 147 public: |
148 NetworkListDetailedView(user::LoginStatus login, int header_string_id) | 148 NetworkListDetailedView(SystemTrayItem* owner, |
149 : NetworkListDetailedViewBase(login, header_string_id), | 149 user::LoginStatus login, |
| 150 int header_string_id) |
| 151 : NetworkListDetailedViewBase(owner, login, header_string_id), |
150 airplane_(NULL), | 152 airplane_(NULL), |
151 button_wifi_(NULL), | 153 button_wifi_(NULL), |
152 button_mobile_(NULL), | 154 button_mobile_(NULL), |
153 view_mobile_account_(NULL), | 155 view_mobile_account_(NULL), |
154 setup_mobile_account_(NULL), | 156 setup_mobile_account_(NULL), |
155 other_wifi_(NULL), | 157 other_wifi_(NULL), |
156 turn_on_wifi_(NULL), | 158 turn_on_wifi_(NULL), |
157 other_mobile_(NULL) { | 159 other_mobile_(NULL) { |
158 } | 160 } |
159 | 161 |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
363 views::View* setup_mobile_account_; | 365 views::View* setup_mobile_account_; |
364 TrayPopupLabelButton* other_wifi_; | 366 TrayPopupLabelButton* other_wifi_; |
365 TrayPopupLabelButton* turn_on_wifi_; | 367 TrayPopupLabelButton* turn_on_wifi_; |
366 TrayPopupLabelButton* other_mobile_; | 368 TrayPopupLabelButton* other_mobile_; |
367 | 369 |
368 DISALLOW_COPY_AND_ASSIGN(NetworkListDetailedView); | 370 DISALLOW_COPY_AND_ASSIGN(NetworkListDetailedView); |
369 }; | 371 }; |
370 | 372 |
371 class NetworkWifiDetailedView : public NetworkDetailedView { | 373 class NetworkWifiDetailedView : public NetworkDetailedView { |
372 public: | 374 public: |
373 explicit NetworkWifiDetailedView(bool wifi_enabled) { | 375 NetworkWifiDetailedView(SystemTrayItem* owner, bool wifi_enabled) |
| 376 : NetworkDetailedView(owner) { |
374 SetLayoutManager(new views::BoxLayout(views::BoxLayout::kHorizontal, | 377 SetLayoutManager(new views::BoxLayout(views::BoxLayout::kHorizontal, |
375 kTrayPopupPaddingHorizontal, | 378 kTrayPopupPaddingHorizontal, |
376 10, | 379 10, |
377 kTrayPopupPaddingBetweenItems)); | 380 kTrayPopupPaddingBetweenItems)); |
378 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); | 381 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); |
379 views::ImageView* image = new views::ImageView; | 382 views::ImageView* image = new views::ImageView; |
380 const int image_id = wifi_enabled ? | 383 const int image_id = wifi_enabled ? |
381 IDR_AURA_UBER_TRAY_WIFI_ENABLED : IDR_AURA_UBER_TRAY_WIFI_DISABLED; | 384 IDR_AURA_UBER_TRAY_WIFI_ENABLED : IDR_AURA_UBER_TRAY_WIFI_DISABLED; |
382 image->SetImage(bundle.GetImageNamed(image_id).ToImageSkia()); | 385 image->SetImage(bundle.GetImageNamed(image_id).ToImageSkia()); |
383 AddChildView(image); | 386 AddChildView(image); |
(...skipping 21 matching lines...) Expand all Loading... |
405 | 408 |
406 virtual void Update() OVERRIDE {} | 409 virtual void Update() OVERRIDE {} |
407 | 410 |
408 private: | 411 private: |
409 DISALLOW_COPY_AND_ASSIGN(NetworkWifiDetailedView); | 412 DISALLOW_COPY_AND_ASSIGN(NetworkWifiDetailedView); |
410 }; | 413 }; |
411 | 414 |
412 class NetworkMessageView : public views::View, | 415 class NetworkMessageView : public views::View, |
413 public views::LinkListener { | 416 public views::LinkListener { |
414 public: | 417 public: |
415 NetworkMessageView(TrayNetwork* tray, | 418 NetworkMessageView(TrayNetwork* owner, |
416 TrayNetwork::MessageType message_type, | 419 TrayNetwork::MessageType message_type, |
417 const NetworkMessages::Message& network_msg) | 420 const NetworkMessages::Message& network_msg) |
418 : tray_(tray), | 421 : owner_(owner), |
419 message_type_(message_type), | 422 message_type_(message_type), |
420 network_type_(network_msg.network_type_) { | 423 network_type_(network_msg.network_type_) { |
421 SetLayoutManager( | 424 SetLayoutManager( |
422 new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 1)); | 425 new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 1)); |
423 | 426 |
424 if (!network_msg.title.empty()) { | 427 if (!network_msg.title.empty()) { |
425 views::Label* title = new views::Label(network_msg.title); | 428 views::Label* title = new views::Label(network_msg.title); |
426 title->SetHorizontalAlignment(gfx::ALIGN_LEFT); | 429 title->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
427 title->SetFont(title->font().DeriveFont(0, gfx::Font::BOLD)); | 430 title->SetFont(title->font().DeriveFont(0, gfx::Font::BOLD)); |
428 AddChildView(title); | 431 AddChildView(title); |
(...skipping 18 matching lines...) Expand all Loading... |
447 AddChildView(link); | 450 AddChildView(link); |
448 } | 451 } |
449 } | 452 } |
450 } | 453 } |
451 | 454 |
452 virtual ~NetworkMessageView() { | 455 virtual ~NetworkMessageView() { |
453 } | 456 } |
454 | 457 |
455 // Overridden from views::LinkListener. | 458 // Overridden from views::LinkListener. |
456 virtual void LinkClicked(views::Link* source, int event_flags) OVERRIDE { | 459 virtual void LinkClicked(views::Link* source, int event_flags) OVERRIDE { |
457 tray_->LinkClicked(message_type_, source->id()); | 460 owner_->LinkClicked(message_type_, source->id()); |
458 } | 461 } |
459 | 462 |
460 TrayNetwork::MessageType message_type() const { return message_type_; } | 463 TrayNetwork::MessageType message_type() const { return message_type_; } |
461 TrayNetwork::NetworkType network_type() const { return network_type_; } | 464 TrayNetwork::NetworkType network_type() const { return network_type_; } |
462 | 465 |
463 private: | 466 private: |
464 TrayNetwork* tray_; | 467 TrayNetwork* owner_; |
465 TrayNetwork::MessageType message_type_; | 468 TrayNetwork::MessageType message_type_; |
466 TrayNetwork::NetworkType network_type_; | 469 TrayNetwork::NetworkType network_type_; |
467 | 470 |
468 DISALLOW_COPY_AND_ASSIGN(NetworkMessageView); | 471 DISALLOW_COPY_AND_ASSIGN(NetworkMessageView); |
469 }; | 472 }; |
470 | 473 |
471 class NetworkNotificationView : public TrayNotificationView { | 474 class NetworkNotificationView : public TrayNotificationView { |
472 public: | 475 public: |
473 explicit NetworkNotificationView(TrayNetwork* tray) | 476 explicit NetworkNotificationView(TrayNetwork* owner) |
474 : TrayNotificationView(tray, 0) { | 477 : TrayNotificationView(owner, 0) { |
475 CreateMessageView(); | 478 CreateMessageView(); |
476 InitView(network_message_view_); | 479 InitView(network_message_view_); |
477 SetIconImage(*ResourceBundle::GetSharedInstance().GetImageSkiaNamed( | 480 SetIconImage(*ResourceBundle::GetSharedInstance().GetImageSkiaNamed( |
478 GetMessageIcon(network_message_view_->message_type(), | 481 GetMessageIcon(network_message_view_->message_type(), |
479 network_message_view_->network_type()))); | 482 network_message_view_->network_type()))); |
480 } | 483 } |
481 | 484 |
482 // Overridden from TrayNotificationView. | 485 // Overridden from TrayNotificationView. |
483 virtual void OnClose() OVERRIDE { | 486 virtual void OnClose() OVERRIDE { |
484 tray_network()->ClearNetworkMessage(network_message_view_->message_type()); | 487 tray_network()->ClearNetworkMessage(network_message_view_->message_type()); |
485 } | 488 } |
486 | 489 |
487 virtual void OnClickAction() OVERRIDE { | 490 virtual void OnClickAction() OVERRIDE { |
488 if (network_message_view_->message_type() != | 491 if (network_message_view_->message_type() != |
489 TrayNetwork::MESSAGE_DATA_PROMO) | 492 TrayNetwork::MESSAGE_DATA_PROMO) |
490 tray()->PopupDetailedView(0, true); | 493 owner()->PopupDetailedView(0, true); |
491 } | 494 } |
492 | 495 |
493 void Update() { | 496 void Update() { |
494 CreateMessageView(); | 497 CreateMessageView(); |
495 UpdateViewAndImage(network_message_view_, | 498 UpdateViewAndImage(network_message_view_, |
496 *ResourceBundle::GetSharedInstance().GetImageSkiaNamed( | 499 *ResourceBundle::GetSharedInstance().GetImageSkiaNamed( |
497 GetMessageIcon(network_message_view_->message_type(), | 500 GetMessageIcon(network_message_view_->message_type(), |
498 network_message_view_->network_type()))); | 501 network_message_view_->network_type()))); |
499 } | 502 } |
500 | 503 |
501 private: | 504 private: |
502 TrayNetwork* tray_network() { | 505 TrayNetwork* tray_network() { |
503 return static_cast<TrayNetwork*>(tray()); | 506 return static_cast<TrayNetwork*>(owner()); |
504 } | 507 } |
505 | 508 |
506 void CreateMessageView() { | 509 void CreateMessageView() { |
507 // Display the first (highest priority) message. | 510 // Display the first (highest priority) message. |
508 CHECK(!tray_network()->messages()->messages().empty()); | 511 CHECK(!tray_network()->messages()->messages().empty()); |
509 NetworkMessages::MessageMap::const_iterator iter = | 512 NetworkMessages::MessageMap::const_iterator iter = |
510 tray_network()->messages()->messages().begin(); | 513 tray_network()->messages()->messages().begin(); |
511 network_message_view_ = | 514 network_message_view_ = |
512 new NetworkMessageView(tray_network(), iter->first, iter->second); | 515 new NetworkMessageView(tray_network(), iter->first, iter->second); |
513 } | 516 } |
514 | 517 |
515 tray::NetworkMessageView* network_message_view_; | 518 tray::NetworkMessageView* network_message_view_; |
516 | 519 |
517 DISALLOW_COPY_AND_ASSIGN(NetworkNotificationView); | 520 DISALLOW_COPY_AND_ASSIGN(NetworkNotificationView); |
518 }; | 521 }; |
519 | 522 |
520 } // namespace tray | 523 } // namespace tray |
521 | 524 |
522 TrayNetwork::TrayNetwork() | 525 TrayNetwork::TrayNetwork(SystemTray* system_tray) |
523 : tray_(NULL), | 526 : SystemTrayItem(system_tray), |
| 527 tray_(NULL), |
524 default_(NULL), | 528 default_(NULL), |
525 detailed_(NULL), | 529 detailed_(NULL), |
526 notification_(NULL), | 530 notification_(NULL), |
527 messages_(new tray::NetworkMessages()), | 531 messages_(new tray::NetworkMessages()), |
528 request_wifi_view_(false) { | 532 request_wifi_view_(false) { |
529 } | 533 } |
530 | 534 |
531 TrayNetwork::~TrayNetwork() { | 535 TrayNetwork::~TrayNetwork() { |
532 } | 536 } |
533 | 537 |
534 views::View* TrayNetwork::CreateTrayView(user::LoginStatus status) { | 538 views::View* TrayNetwork::CreateTrayView(user::LoginStatus status) { |
535 CHECK(tray_ == NULL); | 539 CHECK(tray_ == NULL); |
536 tray_ = new tray::NetworkTrayView(tray::LIGHT, true /*tray_icon*/); | 540 tray_ = new tray::NetworkTrayView(this, tray::LIGHT, true /*tray_icon*/); |
537 return tray_; | 541 return tray_; |
538 } | 542 } |
539 | 543 |
540 views::View* TrayNetwork::CreateDefaultView(user::LoginStatus status) { | 544 views::View* TrayNetwork::CreateDefaultView(user::LoginStatus status) { |
541 CHECK(default_ == NULL); | 545 CHECK(default_ == NULL); |
542 default_ = | 546 default_ = |
543 new tray::NetworkDefaultView(this, status != user::LOGGED_IN_LOCKED); | 547 new tray::NetworkDefaultView(this, status != user::LOGGED_IN_LOCKED); |
544 return default_; | 548 return default_; |
545 } | 549 } |
546 | 550 |
547 views::View* TrayNetwork::CreateDetailedView(user::LoginStatus status) { | 551 views::View* TrayNetwork::CreateDetailedView(user::LoginStatus status) { |
548 CHECK(detailed_ == NULL); | 552 CHECK(detailed_ == NULL); |
549 // Clear any notifications when showing the detailed view. | 553 // Clear any notifications when showing the detailed view. |
550 messages_->messages().clear(); | 554 messages_->messages().clear(); |
551 HideNotificationView(); | 555 HideNotificationView(); |
552 if (request_wifi_view_) { | 556 if (request_wifi_view_) { |
553 SystemTrayDelegate* delegate = Shell::GetInstance()->tray_delegate(); | 557 SystemTrayDelegate* delegate = Shell::GetInstance()->tray_delegate(); |
554 // The Wi-Fi state is not toggled yet at this point. | 558 // The Wi-Fi state is not toggled yet at this point. |
555 detailed_ = new tray::NetworkWifiDetailedView(!delegate->GetWifiEnabled()); | 559 detailed_ = new tray::NetworkWifiDetailedView(this, |
| 560 !delegate->GetWifiEnabled()); |
556 request_wifi_view_ = false; | 561 request_wifi_view_ = false; |
557 } else { | 562 } else { |
558 detailed_ = new tray::NetworkListDetailedView( | 563 detailed_ = new tray::NetworkListDetailedView( |
559 status, IDS_ASH_STATUS_TRAY_NETWORK); | 564 this, status, IDS_ASH_STATUS_TRAY_NETWORK); |
560 detailed_->Init(); | 565 detailed_->Init(); |
561 } | 566 } |
562 return detailed_; | 567 return detailed_; |
563 } | 568 } |
564 | 569 |
565 views::View* TrayNetwork::CreateNotificationView(user::LoginStatus status) { | 570 views::View* TrayNetwork::CreateNotificationView(user::LoginStatus status) { |
566 CHECK(notification_ == NULL); | 571 CHECK(notification_ == NULL); |
567 if (messages_->messages().empty()) | 572 if (messages_->messages().empty()) |
568 return NULL; // Message has already been cleared. | 573 return NULL; // Message has already been cleared. |
569 notification_ = new tray::NetworkNotificationView(this); | 574 notification_ = new tray::NetworkNotificationView(this); |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
638 | 643 |
639 void TrayNetwork::LinkClicked(MessageType message_type, int link_id) { | 644 void TrayNetwork::LinkClicked(MessageType message_type, int link_id) { |
640 tray::NetworkMessages::MessageMap::const_iterator iter = | 645 tray::NetworkMessages::MessageMap::const_iterator iter = |
641 messages()->messages().find(message_type); | 646 messages()->messages().find(message_type); |
642 if (iter != messages()->messages().end() && iter->second.delegate) | 647 if (iter != messages()->messages().end() && iter->second.delegate) |
643 iter->second.delegate->NotificationLinkClicked(link_id); | 648 iter->second.delegate->NotificationLinkClicked(link_id); |
644 } | 649 } |
645 | 650 |
646 } // namespace internal | 651 } // namespace internal |
647 } // namespace ash | 652 } // namespace ash |
OLD | NEW |