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

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

Issue 12779022: Add Ash notification UI for OutOfCredits network property (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add support for R26 Created 7 years, 9 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
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/ash_switches.h"
8 #include "ash/shell.h" 8 #include "ash/shell.h"
9 #include "ash/system/chromeos/network/network_icon_animation.h" 9 #include "ash/system/chromeos/network/network_icon_animation.h"
10 #include "ash/system/chromeos/network/network_list_detailed_view.h" 10 #include "ash/system/chromeos/network/network_list_detailed_view.h"
11 #include "ash/system/chromeos/network/network_list_detailed_view_base.h" 11 #include "ash/system/chromeos/network/network_list_detailed_view_base.h"
12 #include "ash/system/chromeos/network/network_state_list_detailed_view.h" 12 #include "ash/system/chromeos/network/network_state_list_detailed_view.h"
13 #include "ash/system/chromeos/network/network_state_notifier.h" 13 #include "ash/system/chromeos/network/network_state_notifier.h"
14 #include "ash/system/chromeos/network/network_tray_delegate.h"
14 #include "ash/system/tray/system_tray.h" 15 #include "ash/system/tray/system_tray.h"
15 #include "ash/system/tray/system_tray_delegate.h" 16 #include "ash/system/tray/system_tray_delegate.h"
16 #include "ash/system/tray/system_tray_notifier.h" 17 #include "ash/system/tray/system_tray_notifier.h"
17 #include "ash/system/tray/tray_constants.h" 18 #include "ash/system/tray/tray_constants.h"
18 #include "ash/system/tray/tray_item_more.h" 19 #include "ash/system/tray/tray_item_more.h"
19 #include "ash/system/tray/tray_item_view.h" 20 #include "ash/system/tray/tray_item_view.h"
20 #include "ash/system/tray/tray_notification_view.h" 21 #include "ash/system/tray/tray_notification_view.h"
21 #include "base/command_line.h" 22 #include "base/command_line.h"
22 #include "base/utf_string_conversions.h" 23 #include "base/utf_string_conversions.h"
23 #include "chromeos/network/network_state.h" 24 #include "chromeos/network/network_state.h"
24 #include "chromeos/network/network_state_handler.h" 25 #include "chromeos/network/network_state_handler.h"
25 #include "grit/ash_resources.h" 26 #include "grit/ash_resources.h"
26 #include "grit/ash_strings.h" 27 #include "grit/ash_strings.h"
27 #include "third_party/cros_system_api/dbus/service_constants.h" 28 #include "third_party/cros_system_api/dbus/service_constants.h"
28 #include "ui/base/accessibility/accessible_view_state.h" 29 #include "ui/base/accessibility/accessible_view_state.h"
29 #include "ui/base/l10n/l10n_util.h" 30 #include "ui/base/l10n/l10n_util.h"
30 #include "ui/base/resource/resource_bundle.h" 31 #include "ui/base/resource/resource_bundle.h"
31 #include "ui/views/controls/link.h" 32 #include "ui/views/controls/link.h"
32 #include "ui/views/controls/link_listener.h" 33 #include "ui/views/controls/link_listener.h"
33 #include "ui/views/layout/box_layout.h" 34 #include "ui/views/layout/box_layout.h"
34 #include "ui/views/widget/widget.h" 35 #include "ui/views/widget/widget.h"
35 36
37 using ash::internal::TrayNetwork;
38 using ash::NetworkObserver;
36 using chromeos::NetworkState; 39 using chromeos::NetworkState;
37 using chromeos::NetworkStateHandler; 40 using chromeos::NetworkStateHandler;
38 41
39 namespace { 42 namespace {
40 43
41 using ash::internal::TrayNetwork; 44 int GetMessageIcon(NetworkObserver::MessageType message_type,
42 45 NetworkObserver::NetworkType network_type) {
43 int GetMessageIcon(
44 TrayNetwork::MessageType message_type,
45 TrayNetwork::NetworkType network_type) {
46 switch(message_type) { 46 switch(message_type) {
47 case TrayNetwork::ERROR_CONNECT_FAILED: 47 case NetworkObserver::ERROR_CONNECT_FAILED:
48 if (TrayNetwork::NETWORK_CELLULAR == network_type) 48 if (NetworkObserver::NETWORK_CELLULAR == network_type)
49 return IDR_AURA_UBER_TRAY_CELLULAR_NETWORK_FAILED; 49 return IDR_AURA_UBER_TRAY_CELLULAR_NETWORK_FAILED;
50 else 50 else
51 return IDR_AURA_UBER_TRAY_NETWORK_FAILED; 51 return IDR_AURA_UBER_TRAY_NETWORK_FAILED;
52 case TrayNetwork::MESSAGE_DATA_PROMO: 52 case NetworkObserver::ERROR_OUT_OF_CREDITS:
53 case NetworkObserver::MESSAGE_DATA_PROMO:
53 if (network_type == TrayNetwork::NETWORK_CELLULAR_LTE) 54 if (network_type == TrayNetwork::NETWORK_CELLULAR_LTE)
54 return IDR_AURA_UBER_TRAY_NOTIFICATION_LTE; 55 return IDR_AURA_UBER_TRAY_NOTIFICATION_LTE;
55 else 56 else
56 return IDR_AURA_UBER_TRAY_NOTIFICATION_3G; 57 return IDR_AURA_UBER_TRAY_NOTIFICATION_3G;
57 } 58 }
58 NOTREACHED(); 59 NOTREACHED();
59 return 0; 60 return 0;
60 } 61 }
61 62
62 bool UseNewNetworkHandlers() { 63 bool UseNewNetworkHandlers() {
63 return !CommandLine::ForCurrentProcess()->HasSwitch( 64 return !CommandLine::ForCurrentProcess()->HasSwitch(
64 ash::switches::kAshDisableNewNetworkStatusArea) && 65 ash::switches::kAshDisableNewNetworkStatusArea) &&
65 NetworkStateHandler::IsInitialized(); 66 NetworkStateHandler::IsInitialized();
66 } 67 }
67 68
68 } // namespace 69 } // namespace
69 70
70 namespace ash { 71 namespace ash {
71 namespace internal { 72 namespace internal {
72 73
73 namespace tray { 74 namespace tray {
74 75
75 class NetworkMessages { 76 class NetworkMessages {
76 public: 77 public:
77 struct Message { 78 struct Message {
78 Message() : delegate(NULL) {} 79 Message() : delegate(NULL) {}
79 Message(NetworkTrayDelegate* in_delegate, 80 Message(NetworkTrayDelegate* in_delegate,
80 TrayNetwork::NetworkType network_type, 81 NetworkObserver::NetworkType network_type,
81 const string16& in_title, 82 const string16& in_title,
82 const string16& in_message, 83 const string16& in_message,
83 const std::vector<string16>& in_links) : 84 const std::vector<string16>& in_links) :
84 delegate(in_delegate), 85 delegate(in_delegate),
85 network_type_(network_type), 86 network_type_(network_type),
86 title(in_title), 87 title(in_title),
87 message(in_message), 88 message(in_message),
88 links(in_links) {} 89 links(in_links) {}
89 NetworkTrayDelegate* delegate; 90 NetworkTrayDelegate* delegate;
90 TrayNetwork::NetworkType network_type_; 91 NetworkObserver::NetworkType network_type_;
91 string16 title; 92 string16 title;
92 string16 message; 93 string16 message;
93 std::vector<string16> links; 94 std::vector<string16> links;
94 }; 95 };
95 typedef std::map<TrayNetwork::MessageType, Message> MessageMap; 96 typedef std::map<NetworkObserver::MessageType, Message> MessageMap;
96 97
97 MessageMap& messages() { return messages_; } 98 MessageMap& messages() { return messages_; }
98 const MessageMap& messages() const { return messages_; } 99 const MessageMap& messages() const { return messages_; }
99 100
100 private: 101 private:
101 MessageMap messages_; 102 MessageMap messages_;
102 }; 103 };
103 104
104 class NetworkTrayView : public TrayItemView, 105 class NetworkTrayView : public TrayItemView,
105 public network_icon::AnimationObserver { 106 public network_icon::AnimationObserver {
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 } 289 }
289 290
290 private: 291 private:
291 DISALLOW_COPY_AND_ASSIGN(NetworkWifiDetailedView); 292 DISALLOW_COPY_AND_ASSIGN(NetworkWifiDetailedView);
292 }; 293 };
293 294
294 class NetworkMessageView : public views::View, 295 class NetworkMessageView : public views::View,
295 public views::LinkListener { 296 public views::LinkListener {
296 public: 297 public:
297 NetworkMessageView(TrayNetwork* tray_network, 298 NetworkMessageView(TrayNetwork* tray_network,
298 TrayNetwork::MessageType message_type, 299 NetworkObserver::MessageType message_type,
299 const NetworkMessages::Message& network_msg) 300 const NetworkMessages::Message& network_msg)
300 : tray_network_(tray_network), 301 : tray_network_(tray_network),
301 message_type_(message_type), 302 message_type_(message_type),
302 network_type_(network_msg.network_type_) { 303 network_type_(network_msg.network_type_) {
303 SetLayoutManager( 304 SetLayoutManager(
304 new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 1)); 305 new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 1));
305 306
306 if (!network_msg.title.empty()) { 307 if (!network_msg.title.empty()) {
307 views::Label* title = new views::Label(network_msg.title); 308 views::Label* title = new views::Label(network_msg.title);
308 title->SetHorizontalAlignment(gfx::ALIGN_LEFT); 309 title->SetHorizontalAlignment(gfx::ALIGN_LEFT);
(...skipping 23 matching lines...) Expand all
332 } 333 }
333 334
334 virtual ~NetworkMessageView() { 335 virtual ~NetworkMessageView() {
335 } 336 }
336 337
337 // Overridden from views::LinkListener. 338 // Overridden from views::LinkListener.
338 virtual void LinkClicked(views::Link* source, int event_flags) OVERRIDE { 339 virtual void LinkClicked(views::Link* source, int event_flags) OVERRIDE {
339 tray_network_->LinkClicked(message_type_, source->id()); 340 tray_network_->LinkClicked(message_type_, source->id());
340 } 341 }
341 342
342 TrayNetwork::MessageType message_type() const { return message_type_; } 343 NetworkObserver::MessageType message_type() const { return message_type_; }
343 TrayNetwork::NetworkType network_type() const { return network_type_; } 344 NetworkObserver::NetworkType network_type() const { return network_type_; }
344 345
345 private: 346 private:
346 TrayNetwork* tray_network_; 347 TrayNetwork* tray_network_;
347 TrayNetwork::MessageType message_type_; 348 NetworkObserver::MessageType message_type_;
348 TrayNetwork::NetworkType network_type_; 349 NetworkObserver::NetworkType network_type_;
349 350
350 DISALLOW_COPY_AND_ASSIGN(NetworkMessageView); 351 DISALLOW_COPY_AND_ASSIGN(NetworkMessageView);
351 }; 352 };
352 353
353 class NetworkNotificationView : public TrayNotificationView { 354 class NetworkNotificationView : public TrayNotificationView {
354 public: 355 public:
355 explicit NetworkNotificationView(TrayNetwork* tray_network) 356 explicit NetworkNotificationView(TrayNetwork* tray_network)
356 : TrayNotificationView(tray_network, 0), 357 : TrayNotificationView(tray_network, 0),
357 tray_network_(tray_network) { 358 tray_network_(tray_network) {
358 CreateMessageView(); 359 CreateMessageView();
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
491 void TrayNetwork::OnNetworkRefresh(const NetworkIconInfo& info) { 492 void TrayNetwork::OnNetworkRefresh(const NetworkIconInfo& info) {
492 if (tray_) 493 if (tray_)
493 tray_->Update(info); 494 tray_->Update(info);
494 if (default_) 495 if (default_)
495 default_->Update(); 496 default_->Update();
496 if (detailed_) 497 if (detailed_)
497 detailed_->ManagerChanged(); 498 detailed_->ManagerChanged();
498 } 499 }
499 500
500 void TrayNetwork::SetNetworkMessage(NetworkTrayDelegate* delegate, 501 void TrayNetwork::SetNetworkMessage(NetworkTrayDelegate* delegate,
501 MessageType message_type, 502 MessageType message_type,
502 NetworkType network_type, 503 NetworkType network_type,
503 const string16& title, 504 const string16& title,
504 const string16& message, 505 const string16& message,
505 const std::vector<string16>& links) { 506 const std::vector<string16>& links) {
506 messages_->messages()[message_type] = tray::NetworkMessages::Message( 507 messages_->messages()[message_type] = tray::NetworkMessages::Message(
507 delegate, network_type, title, message, links); 508 delegate, network_type, title, message, links);
508 if (notification_) 509 if (notification_)
509 notification_->Update(); 510 notification_->Update();
510 else 511 else
511 ShowNotificationView(); 512 ShowNotificationView();
512 } 513 }
513 514
514 void TrayNetwork::ClearNetworkMessage(MessageType message_type) { 515 void TrayNetwork::ClearNetworkMessage(MessageType message_type) {
515 messages_->messages().erase(message_type); 516 messages_->messages().erase(message_type);
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
612 // Get icon and label for connected or connecting network. 613 // Get icon and label for connected or connecting network.
613 *image = network_icon::GetImageForNetwork(network, icon_type); 614 *image = network_icon::GetImageForNetwork(network, icon_type);
614 if (label) 615 if (label)
615 *label = network_icon::GetLabelForNetwork(network, icon_type); 616 *label = network_icon::GetLabelForNetwork(network, icon_type);
616 } 617 }
617 618
618 void TrayNetwork::LinkClicked(MessageType message_type, int link_id) { 619 void TrayNetwork::LinkClicked(MessageType message_type, int link_id) {
619 tray::NetworkMessages::MessageMap::const_iterator iter = 620 tray::NetworkMessages::MessageMap::const_iterator iter =
620 messages()->messages().find(message_type); 621 messages()->messages().find(message_type);
621 if (iter != messages()->messages().end() && iter->second.delegate) 622 if (iter != messages()->messages().end() && iter->second.delegate)
622 iter->second.delegate->NotificationLinkClicked(link_id); 623 iter->second.delegate->NotificationLinkClicked(message_type, link_id);
623 } 624 }
624 625
625 } // namespace internal 626 } // namespace internal
626 } // namespace ash 627 } // namespace ash
OLDNEW
« no previous file with comments | « ash/system/chromeos/network/network_tray_delegate.h ('k') | chrome/browser/chromeos/cros/native_network_parser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698