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

Side by Side Diff: ash/system/chromeos/network/tray_network.cc

Issue 11361274: Add NetworkStateListDetailedView (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 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
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/chromeos/network/tray_network.h" 5 #include "ash/system/chromeos/network/tray_network.h"
6 6
7 #include "ash/ash_switches.h"
7 #include "ash/shell.h" 8 #include "ash/shell.h"
8 #include "ash/system/chromeos/network/network_list_detailed_view_base.h" 9 #include "ash/system/chromeos/network/network_list_detailed_view_base.h"
10 #include "ash/system/chromeos/network/network_state_list_detailed_view.h"
11 #include "ash/system/chromeos/network/tray_network_state_observer.h"
9 #include "ash/system/tray/system_tray.h" 12 #include "ash/system/tray/system_tray.h"
10 #include "ash/system/tray/system_tray_delegate.h" 13 #include "ash/system/tray/system_tray_delegate.h"
11 #include "ash/system/tray/tray_constants.h" 14 #include "ash/system/tray/tray_constants.h"
12 #include "ash/system/tray/tray_item_more.h" 15 #include "ash/system/tray/tray_item_more.h"
13 #include "ash/system/tray/tray_item_view.h" 16 #include "ash/system/tray/tray_item_view.h"
14 #include "ash/system/tray/tray_notification_view.h" 17 #include "ash/system/tray/tray_notification_view.h"
18 #include "base/command_line.h"
19 #include "chromeos/network/network_state_handler.h"
15 #include "grit/ash_resources.h" 20 #include "grit/ash_resources.h"
16 #include "grit/ash_strings.h" 21 #include "grit/ash_strings.h"
22 #include "third_party/cros_system_api/dbus/service_constants.h"
17 #include "ui/base/l10n/l10n_util.h" 23 #include "ui/base/l10n/l10n_util.h"
18 #include "ui/base/resource/resource_bundle.h" 24 #include "ui/base/resource/resource_bundle.h"
19 #include "ui/views/controls/link.h" 25 #include "ui/views/controls/link.h"
20 #include "ui/views/controls/link_listener.h" 26 #include "ui/views/controls/link_listener.h"
21 #include "ui/views/layout/box_layout.h" 27 #include "ui/views/layout/box_layout.h"
22 28
23 namespace { 29 namespace {
24 30
25 using ash::internal::TrayNetwork; 31 using ash::internal::TrayNetwork;
26 32
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 78
73 MessageMap& messages() { return messages_; } 79 MessageMap& messages() { return messages_; }
74 const MessageMap& messages() const { return messages_; } 80 const MessageMap& messages() const { return messages_; }
75 81
76 private: 82 private:
77 MessageMap messages_; 83 MessageMap messages_;
78 }; 84 };
79 85
80 class NetworkTrayView : public TrayItemView { 86 class NetworkTrayView : public TrayItemView {
81 public: 87 public:
82 NetworkTrayView(ColorTheme size, bool tray_icon) 88 NetworkTrayView(ColorTheme size)
83 : color_theme_(size), tray_icon_(tray_icon) { 89 : color_theme_(size) {
84 SetLayoutManager( 90 SetLayoutManager(
85 new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0)); 91 new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0));
86 92
87 image_view_ = color_theme_ == DARK ? 93 image_view_ = color_theme_ == DARK ?
88 new FixedSizedImageView(0, kTrayPopupItemHeight) : 94 new FixedSizedImageView(0, kTrayPopupItemHeight) :
89 new views::ImageView; 95 new views::ImageView;
90 AddChildView(image_view_); 96 AddChildView(image_view_);
91 97
92 NetworkIconInfo info; 98 NetworkIconInfo info;
93 Shell::GetInstance()->tray_delegate()-> 99 Shell::GetInstance()->tray_delegate()->
94 GetMostRelevantNetworkIcon(&info, false); 100 GetMostRelevantNetworkIcon(&info, false);
95 Update(info); 101 Update(info);
96 } 102 }
97 103
98 virtual ~NetworkTrayView() {} 104 virtual ~NetworkTrayView() {}
99 105
100 void Update(const NetworkIconInfo& info) { 106 void Update(const NetworkIconInfo& info) {
101 image_view_->SetImage(info.image); 107 image_view_->SetImage(info.image);
102 if (tray_icon_) 108 SetVisible(info.tray_icon_visible);
103 SetVisible(info.tray_icon_visible);
104 SchedulePaint(); 109 SchedulePaint();
105 } 110 }
106 111
107 private: 112 private:
108 views::ImageView* image_view_; 113 views::ImageView* image_view_;
109 ColorTheme color_theme_; 114 ColorTheme color_theme_;
110 bool tray_icon_;
111 115
112 DISALLOW_COPY_AND_ASSIGN(NetworkTrayView); 116 DISALLOW_COPY_AND_ASSIGN(NetworkTrayView);
113 }; 117 };
114 118
115 class NetworkDefaultView : public TrayItemMore { 119 class NetworkDefaultView : public TrayItemMore {
116 public: 120 public:
117 NetworkDefaultView(SystemTrayItem* owner, bool show_more) 121 NetworkDefaultView(SystemTrayItem* owner, bool show_more)
118 : TrayItemMore(owner, show_more) { 122 : TrayItemMore(owner, show_more) {
119 Update(); 123 Update();
120 } 124 }
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 391
388 // Overridden from NetworkDetailedView: 392 // Overridden from NetworkDetailedView:
389 393
390 virtual void Init() OVERRIDE { 394 virtual void Init() OVERRIDE {
391 } 395 }
392 396
393 virtual NetworkDetailedView::DetailedViewType GetViewType() const OVERRIDE { 397 virtual NetworkDetailedView::DetailedViewType GetViewType() const OVERRIDE {
394 return NetworkDetailedView::WIFI_VIEW; 398 return NetworkDetailedView::WIFI_VIEW;
395 } 399 }
396 400
397 virtual void Update() OVERRIDE {} 401 virtual void ManagerChanged() OVERRIDE {
402 }
403
404 virtual void NetworkListChanged(const NetworkStateList& networks) OVERRIDE {
405 }
406
407 virtual void NetworkServiceChanged(const std::string& service_path) OVERRIDE {
408 }
398 409
399 private: 410 private:
400 DISALLOW_COPY_AND_ASSIGN(NetworkWifiDetailedView); 411 DISALLOW_COPY_AND_ASSIGN(NetworkWifiDetailedView);
401 }; 412 };
402 413
403 class NetworkMessageView : public views::View, 414 class NetworkMessageView : public views::View,
404 public views::LinkListener { 415 public views::LinkListener {
405 public: 416 public:
406 NetworkMessageView(TrayNetwork* tray, 417 NetworkMessageView(TrayNetwork* tray,
407 TrayNetwork::MessageType message_type, 418 TrayNetwork::MessageType message_type,
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 516
506 } // namespace tray 517 } // namespace tray
507 518
508 TrayNetwork::TrayNetwork() 519 TrayNetwork::TrayNetwork()
509 : tray_(NULL), 520 : tray_(NULL),
510 default_(NULL), 521 default_(NULL),
511 detailed_(NULL), 522 detailed_(NULL),
512 notification_(NULL), 523 notification_(NULL),
513 messages_(new tray::NetworkMessages()), 524 messages_(new tray::NetworkMessages()),
514 request_wifi_view_(false) { 525 request_wifi_view_(false) {
526 if (CommandLine::ForCurrentProcess()->HasSwitch(
527 switches::kAshEnableNetworkStateHandler)) {
528 network_state_observer_.reset(new TrayNetworkStateObserver(this));
529 }
515 } 530 }
516 531
517 TrayNetwork::~TrayNetwork() { 532 TrayNetwork::~TrayNetwork() {
518 } 533 }
519 534
520 views::View* TrayNetwork::CreateTrayView(user::LoginStatus status) { 535 views::View* TrayNetwork::CreateTrayView(user::LoginStatus status) {
521 CHECK(tray_ == NULL); 536 CHECK(tray_ == NULL);
522 tray_ = new tray::NetworkTrayView(tray::LIGHT, true /*tray_icon*/); 537 tray_ = new tray::NetworkTrayView(tray::LIGHT);
523 return tray_; 538 return tray_;
524 } 539 }
525 540
526 views::View* TrayNetwork::CreateDefaultView(user::LoginStatus status) { 541 views::View* TrayNetwork::CreateDefaultView(user::LoginStatus status) {
527 CHECK(default_ == NULL); 542 CHECK(default_ == NULL);
528 default_ = 543 default_ =
529 new tray::NetworkDefaultView(this, status != user::LOGGED_IN_LOCKED); 544 new tray::NetworkDefaultView(this, status != user::LOGGED_IN_LOCKED);
530 return default_; 545 return default_;
531 } 546 }
532 547
533 views::View* TrayNetwork::CreateDetailedView(user::LoginStatus status) { 548 views::View* TrayNetwork::CreateDetailedView(user::LoginStatus status) {
534 CHECK(detailed_ == NULL); 549 CHECK(detailed_ == NULL);
535 // Clear any notifications when showing the detailed view. 550 // Clear any notifications when showing the detailed view.
536 messages_->messages().clear(); 551 messages_->messages().clear();
537 HideNotificationView(); 552 HideNotificationView();
538 if (request_wifi_view_) { 553 if (request_wifi_view_) {
539 SystemTrayDelegate* delegate = Shell::GetInstance()->tray_delegate(); 554 SystemTrayDelegate* delegate = Shell::GetInstance()->tray_delegate();
540 // The Wi-Fi state is not toggled yet at this point. 555 // The Wi-Fi state is not toggled yet at this point.
541 detailed_ = new tray::NetworkWifiDetailedView(!delegate->GetWifiEnabled()); 556 detailed_ = new tray::NetworkWifiDetailedView(!delegate->GetWifiEnabled());
542 request_wifi_view_ = false; 557 request_wifi_view_ = false;
543 } else { 558 } else {
544 detailed_ = new tray::NetworkListDetailedView( 559 if (CommandLine::ForCurrentProcess()->HasSwitch(
545 status, IDS_ASH_STATUS_TRAY_NETWORK); 560 switches::kAshEnableNetworkStateHandler)) {
561 detailed_ = new tray::NetworkStateListDetailedView(status);
562 } else {
563 detailed_ = new tray::NetworkListDetailedView(
564 status, IDS_ASH_STATUS_TRAY_NETWORK);
565 }
546 detailed_->Init(); 566 detailed_->Init();
547 } 567 }
548 return detailed_; 568 return detailed_;
549 } 569 }
550 570
551 views::View* TrayNetwork::CreateNotificationView(user::LoginStatus status) { 571 views::View* TrayNetwork::CreateNotificationView(user::LoginStatus status) {
552 CHECK(notification_ == NULL); 572 CHECK(notification_ == NULL);
553 if (messages_->messages().empty()) 573 if (messages_->messages().empty())
554 return NULL; // Message has already been cleared. 574 return NULL; // Message has already been cleared.
555 notification_ = new tray::NetworkNotificationView(this); 575 notification_ = new tray::NetworkNotificationView(this);
(...skipping 22 matching lines...) Expand all
578 void TrayNetwork::UpdateAfterShelfAlignmentChange(ShelfAlignment alignment) { 598 void TrayNetwork::UpdateAfterShelfAlignmentChange(ShelfAlignment alignment) {
579 SetTrayImageItemBorder(tray_, alignment); 599 SetTrayImageItemBorder(tray_, alignment);
580 } 600 }
581 601
582 void TrayNetwork::OnNetworkRefresh(const NetworkIconInfo& info) { 602 void TrayNetwork::OnNetworkRefresh(const NetworkIconInfo& info) {
583 if (tray_) 603 if (tray_)
584 tray_->Update(info); 604 tray_->Update(info);
585 if (default_) 605 if (default_)
586 default_->Update(); 606 default_->Update();
587 if (detailed_) 607 if (detailed_)
588 detailed_->Update(); 608 detailed_->ManagerChanged();
589 } 609 }
590 610
591 void TrayNetwork::SetNetworkMessage(NetworkTrayDelegate* delegate, 611 void TrayNetwork::SetNetworkMessage(NetworkTrayDelegate* delegate,
592 MessageType message_type, 612 MessageType message_type,
593 const string16& title, 613 const string16& title,
594 const string16& message, 614 const string16& message,
595 const std::vector<string16>& links) { 615 const std::vector<string16>& links) {
596 messages_->messages()[message_type] = 616 messages_->messages()[message_type] =
597 tray::NetworkMessages::Message(delegate, title, message, links); 617 tray::NetworkMessages::Message(delegate, title, message, links);
598 if (notification_) 618 if (notification_)
(...skipping 24 matching lines...) Expand all
623 643
624 void TrayNetwork::LinkClicked(MessageType message_type, int link_id) { 644 void TrayNetwork::LinkClicked(MessageType message_type, int link_id) {
625 tray::NetworkMessages::MessageMap::const_iterator iter = 645 tray::NetworkMessages::MessageMap::const_iterator iter =
626 messages()->messages().find(message_type); 646 messages()->messages().find(message_type);
627 if (iter != messages()->messages().end() && iter->second.delegate) 647 if (iter != messages()->messages().end() && iter->second.delegate)
628 iter->second.delegate->NotificationLinkClicked(link_id); 648 iter->second.delegate->NotificationLinkClicked(link_id);
629 } 649 }
630 650
631 } // namespace internal 651 } // namespace internal
632 } // namespace ash 652 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698