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

Side by Side Diff: chrome/browser/chromeos/status/network_menu_button.cc

Issue 4229006: Revert 64888 - Push for ers:... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 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
« no previous file with comments | « chrome/browser/chromeos/status/network_menu_button.h ('k') | no next file » | 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "chrome/browser/chromeos/status/network_menu_button.h" 5 #include "chrome/browser/chromeos/status/network_menu_button.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "app/l10n_util.h" 10 #include "app/l10n_util.h"
(...skipping 17 matching lines...) Expand all
28 // static 28 // static
29 const int NetworkMenuButton::kThrobDuration = 1000; 29 const int NetworkMenuButton::kThrobDuration = 1000;
30 30
31 NetworkMenuButton::NetworkMenuButton(StatusAreaHost* host) 31 NetworkMenuButton::NetworkMenuButton(StatusAreaHost* host)
32 : StatusAreaButton(this), 32 : StatusAreaButton(this),
33 NetworkMenu(), 33 NetworkMenu(),
34 host_(host), 34 host_(host),
35 ALLOW_THIS_IN_INITIALIZER_LIST(animation_connecting_(this)) { 35 ALLOW_THIS_IN_INITIALIZER_LIST(animation_connecting_(this)) {
36 animation_connecting_.SetThrobDuration(kThrobDuration); 36 animation_connecting_.SetThrobDuration(kThrobDuration);
37 animation_connecting_.SetTweenType(Tween::EASE_IN_OUT); 37 animation_connecting_.SetTweenType(Tween::EASE_IN_OUT);
38 OnNetworkManagerChanged(CrosLibrary::Get()->GetNetworkLibrary()); 38 NetworkChanged(CrosLibrary::Get()->GetNetworkLibrary());
39 CrosLibrary::Get()->GetNetworkLibrary()->AddNetworkManagerObserver(this); 39 CrosLibrary::Get()->GetNetworkLibrary()->AddObserver(this);
40 CrosLibrary::Get()->GetNetworkLibrary()->AddCellularDataPlanObserver(this);
41 } 40 }
42 41
43 NetworkMenuButton::~NetworkMenuButton() { 42 NetworkMenuButton::~NetworkMenuButton() {
44 NetworkLibrary* netlib = CrosLibrary::Get()->GetNetworkLibrary(); 43 CrosLibrary::Get()->GetNetworkLibrary()->RemoveObserver(this);
45 netlib->RemoveNetworkManagerObserver(this);
46 netlib->RemoveObserverForAllNetworks(this);
47 netlib->RemoveCellularDataPlanObserver(this);
48 } 44 }
49 45
50 //////////////////////////////////////////////////////////////////////////////// 46 ////////////////////////////////////////////////////////////////////////////////
51 // NetworkMenuButton, AnimationDelegate implementation: 47 // NetworkMenuButton, AnimationDelegate implementation:
52 48
53 void NetworkMenuButton::AnimationProgressed(const Animation* animation) { 49 void NetworkMenuButton::AnimationProgressed(const Animation* animation) {
54 if (animation == &animation_connecting_) { 50 if (animation == &animation_connecting_) {
55 // Draw animation of bars icon fading in and out. 51 // Draw animation of bars icon fading in and out.
56 // We are fading between 0 bars and a third of the opacity of 4 bars. 52 // We are fading between 0 bars and a third of the opacity of 4 bars.
57 // Use the current value of the animation to calculate the alpha value 53 // Use the current value of the animation to calculate the alpha value
(...skipping 12 matching lines...) Expand all
70 66
71 //////////////////////////////////////////////////////////////////////////////// 67 ////////////////////////////////////////////////////////////////////////////////
72 // NetworkMenuButton, StatusAreaButton implementation: 68 // NetworkMenuButton, StatusAreaButton implementation:
73 69
74 void NetworkMenuButton::DrawIcon(gfx::Canvas* canvas) { 70 void NetworkMenuButton::DrawIcon(gfx::Canvas* canvas) {
75 canvas->DrawBitmapInt(IconForDisplay(icon(), badge()), 71 canvas->DrawBitmapInt(IconForDisplay(icon(), badge()),
76 horizontal_padding(), 0); 72 horizontal_padding(), 0);
77 } 73 }
78 74
79 //////////////////////////////////////////////////////////////////////////////// 75 ////////////////////////////////////////////////////////////////////////////////
80 // NetworkMenuButton, NetworkLibrary::NetworkManagerObserver implementation: 76 // NetworkMenuButton, NetworkLibrary::Observer implementation:
81 77
82 void NetworkMenuButton::OnNetworkManagerChanged(NetworkLibrary* cros) { 78 void NetworkMenuButton::NetworkChanged(NetworkLibrary* cros) {
83 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); 79 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
84 if (CrosLibrary::Get()->EnsureLoaded()) { 80 if (CrosLibrary::Get()->EnsureLoaded()) {
85 // Add an observer for the active network, if any
86 const Network* network = cros->active_network();
87 if (active_network_.empty() || network == NULL ||
88 active_network_ != network->service_path()) {
89 if (!active_network_.empty()) {
90 cros->RemoveNetworkObserver(active_network_, this);
91 }
92 if (network != NULL) {
93 cros->AddNetworkObserver(network->service_path(), this);
94 }
95 }
96 if (network)
97 active_network_ = network->service_path();
98 else
99 active_network_ = "";
100
101 if (cros->wifi_connecting() || cros->cellular_connecting()) { 81 if (cros->wifi_connecting() || cros->cellular_connecting()) {
102 // Start the connecting animation if not running. 82 // Start the connecting animation if not running.
103 if (!animation_connecting_.is_animating()) { 83 if (!animation_connecting_.is_animating()) {
104 animation_connecting_.Reset(); 84 animation_connecting_.Reset();
105 animation_connecting_.StartThrobbing(std::numeric_limits<int>::max()); 85 animation_connecting_.StartThrobbing(std::numeric_limits<int>::max());
106 SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0)); 86 SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0));
107 } 87 }
108 std::string network_name = cros->wifi_connecting() ? 88 std::string network_name = cros->wifi_connecting() ?
109 cros->wifi_network()->name() : cros->cellular_network()->name(); 89 cros->wifi_network()->name() : cros->cellular_network()->name();
110 bool configuring = cros->wifi_connecting() ? 90 bool configuring = cros->wifi_connecting() ?
111 cros->wifi_network()->configuring() : 91 cros->wifi_network()->configuring() :
112 cros->cellular_network()->configuring(); 92 cros->cellular_network()->configuring();
113 SetTooltipText( 93 SetTooltipText(
114 l10n_util::GetStringF(configuring ? 94 l10n_util::GetStringF(configuring ?
115 IDS_STATUSBAR_NETWORK_CONFIGURING_TOOLTIP : 95 IDS_STATUSBAR_NETWORK_CONFIGURING_TOOLTIP :
116 IDS_STATUSBAR_NETWORK_CONNECTING_TOOLTIP, 96 IDS_STATUSBAR_NETWORK_CONNECTING_TOOLTIP,
117 UTF8ToWide(network_name))); 97 UTF8ToWide(network_name)));
118 } else { 98 } else {
119 // Stop connecting animation since we are not connecting. 99 // Stop connecting animation since we are not connecting.
120 animation_connecting_.Stop(); 100 animation_connecting_.Stop();
121 if (!cros->Connected()) { 101
102 // Always show the higher priority connection first. Ethernet then wifi.
103 if (cros->ethernet_connected()) {
104 SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_WIRED));
105 SetTooltipText(
106 l10n_util::GetStringF(
107 IDS_STATUSBAR_NETWORK_CONNECTED_TOOLTIP,
108 l10n_util::GetString(IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET)));
109 } else if (cros->wifi_connected()) {
110 SetIcon(IconForNetworkStrength(
111 cros->wifi_network()->strength(), false));
112 SetTooltipText(l10n_util::GetStringF(
113 IDS_STATUSBAR_NETWORK_CONNECTED_TOOLTIP,
114 UTF8ToWide(cros->wifi_network()->name())));
115 } else if (cros->cellular_connected()) {
116 const CellularNetwork* cellular = cros->cellular_network();
117 if (cellular->data_left() == CellularNetwork::DATA_NONE) {
118 // If no data, then we show 0 bars.
119 SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0));
120 } else {
121 SetIcon(IconForNetworkStrength(cellular));
122 }
123 SetTooltipText(l10n_util::GetStringF(
124 IDS_STATUSBAR_NETWORK_CONNECTED_TOOLTIP,
125 UTF8ToWide(cellular->name())));
126 } else {
122 SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0)); 127 SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0));
123 SetTooltipText(l10n_util::GetString( 128 SetTooltipText(l10n_util::GetString(
124 IDS_STATUSBAR_NETWORK_NO_NETWORK_TOOLTIP)); 129 IDS_STATUSBAR_NETWORK_NO_NETWORK_TOOLTIP));
125 } else {
126 SetNetworkIcon(network);
127 } 130 }
128 } 131 }
129 SetNetworkBadge(cros, network); 132
133 // Figure out whether or not to show a badge.
134 int id = -1;
135 if (cros->Connecting()) {
136 if (cros->cellular_connecting()) {
137 id = IDR_STATUSBAR_NETWORK_3G;
138 }
139 } else if (cros->Connected()) {
140 if (!cros->ethernet_connected() && !cros->wifi_connected() &&
141 cros->cellular_connected()) {
142 switch (cros->cellular_network()->data_left()) {
143 case CellularNetwork::DATA_NONE:
144 case CellularNetwork::DATA_VERY_LOW:
145 id = IDR_STATUSBAR_NETWORK_3G_ERROR;
146 break;
147 case CellularNetwork::DATA_LOW:
148 id = IDR_STATUSBAR_NETWORK_3G_WARN;
149 break;
150 case CellularNetwork::DATA_NORMAL:
151 id = IDR_STATUSBAR_NETWORK_3G;
152 break;
153 }
154 }
155 } else {
156 id = IDR_STATUSBAR_NETWORK_DISCONNECTED;
157 }
158 if (id != -1) {
159 SetBadge(*rb.GetBitmapNamed(id));
160 } else {
161 SetBadge(SkBitmap());
162 }
130 } else { 163 } else {
131 SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0)); 164 SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0));
132 SetBadge(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_WARNING)); 165 SetBadge(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_WARNING));
133 SetTooltipText(l10n_util::GetString(
134 IDS_STATUSBAR_NETWORK_NO_NETWORK_TOOLTIP));
135 }
136
137 SchedulePaint();
138 UpdateMenu();
139 }
140
141 ////////////////////////////////////////////////////////////////////////////////
142 // NetworkMenuButton, NetworkLibrary::NetworkObserver implementation:
143 void NetworkMenuButton::OnNetworkChanged(NetworkLibrary* cros,
144 const Network* network) {
145 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
146 if (CrosLibrary::Get()->EnsureLoaded()) {
147 // Always show the active network connection, if any.
148 SetNetworkIcon(network);
149 SetNetworkBadge(cros, network);
150 } else {
151 SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0));
152 SetBadge(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_WARNING));
153 SetTooltipText(l10n_util::GetString( 166 SetTooltipText(l10n_util::GetString(
154 IDS_STATUSBAR_NETWORK_NO_NETWORK_TOOLTIP)); 167 IDS_STATUSBAR_NETWORK_NO_NETWORK_TOOLTIP));
155 } 168 }
156 169
157 SchedulePaint(); 170 SchedulePaint();
158 UpdateMenu(); 171 UpdateMenu();
159 } 172 }
160 173
161 void NetworkMenuButton::OnCellularDataPlanChanged(NetworkLibrary* cros) { 174 void NetworkMenuButton::CellularDataPlanChanged(NetworkLibrary* cros) {
162 // Call OnNetworkManagerChanged which will update the icon. 175 // Call NetworkChanged which will update the icon.
163 OnNetworkManagerChanged(cros); 176 NetworkChanged(cros);
164 } 177 }
165 178
166 //////////////////////////////////////////////////////////////////////////////// 179 ////////////////////////////////////////////////////////////////////////////////
167 // NetworkMenuButton, NetworkMenu implementation: 180 // NetworkMenuButton, NetworkMenu implementation:
168 181
169 bool NetworkMenuButton::IsBrowserMode() const { 182 bool NetworkMenuButton::IsBrowserMode() const {
170 return host_->IsBrowserMode(); 183 return host_->IsBrowserMode();
171 } 184 }
172 185
173 gfx::NativeWindow NetworkMenuButton::GetNativeWindow() const { 186 gfx::NativeWindow NetworkMenuButton::GetNativeWindow() const {
174 return host_->GetNativeWindow(); 187 return host_->GetNativeWindow();
175 } 188 }
176 189
177 void NetworkMenuButton::OpenButtonOptions() const { 190 void NetworkMenuButton::OpenButtonOptions() const {
178 host_->OpenButtonOptions(this); 191 host_->OpenButtonOptions(this);
179 } 192 }
180 193
181 bool NetworkMenuButton::ShouldOpenButtonOptions() const { 194 bool NetworkMenuButton::ShouldOpenButtonOptions() const {
182 return host_->ShouldOpenButtonOptions(this); 195 return host_->ShouldOpenButtonOptions(this);
183 } 196 }
184 197
185 ////////////////////////////////////////////////////////////////////////////////
186 // NetworkMenuButton, private methods
187
188 void NetworkMenuButton::SetNetworkIcon(const Network* network) {
189 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
190 if (network && network->is_active()) {
191 if (network->type() == TYPE_ETHERNET) {
192 SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_WIRED));
193 SetTooltipText(
194 l10n_util::GetStringF(
195 IDS_STATUSBAR_NETWORK_CONNECTED_TOOLTIP,
196 l10n_util::GetString(IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET)));
197 } else if (network->type() == TYPE_WIFI) {
198 const WifiNetwork* wifi = static_cast<const WifiNetwork*>(network);
199 SetIcon(IconForNetworkStrength(wifi->strength(), false));
200 SetTooltipText(l10n_util::GetStringF(
201 IDS_STATUSBAR_NETWORK_CONNECTED_TOOLTIP,
202 UTF8ToWide(wifi->name())));
203 } else if (network->type() == TYPE_CELLULAR) {
204 const CellularNetwork* cellular =
205 static_cast<const CellularNetwork*>(network);
206 if (cellular->data_left() == CellularNetwork::DATA_NONE) {
207 // If no data, then we show 0 bars.
208 SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0));
209 } else {
210 SetIcon(IconForNetworkStrength(cellular));
211 }
212 SetTooltipText(l10n_util::GetStringF(
213 IDS_STATUSBAR_NETWORK_CONNECTED_TOOLTIP,
214 UTF8ToWide(cellular->name())));
215 }
216 }
217 }
218
219 void NetworkMenuButton::SetNetworkBadge(NetworkLibrary* cros,
220 const Network* network) {
221 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
222 // Figure out whether or not to show a badge.
223 if (network && network->type() == TYPE_CELLULAR &&
224 (network->is_active() || network->connecting())) {
225 const CellularNetwork* cellular
226 = static_cast<const CellularNetwork*>(network);
227 SetBadge(BadgeForNetworkTechnology(cellular));
228 } else if (!cros->Connected() && !cros->Connecting()) {
229 SetBadge(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_DISCONNECTED));
230 } else {
231 SetBadge(SkBitmap());
232 }
233 }
234
235 } // namespace chromeos 198 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/status/network_menu_button.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698