OLD | NEW |
---|---|
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.h" | 5 #include "chrome/browser/chromeos/status/network_menu.h" |
6 | 6 |
7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
8 #include "app/resource_bundle.h" | 8 #include "app/resource_bundle.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
84 IDS_STATUSBAR_NETWORK_DEVICE_CONNECTING) | 84 IDS_STATUSBAR_NETWORK_DEVICE_CONNECTING) |
85 + ": " + wifi.GetStateString(); | 85 + ": " + wifi.GetStateString(); |
86 } else if (wifi.state() == STATE_FAILURE) { | 86 } else if (wifi.state() == STATE_FAILURE) { |
87 info->status = kNetworkStatusError; | 87 info->status = kNetworkStatusError; |
88 info->message = wifi.GetErrorString(); | 88 info->message = wifi.GetErrorString(); |
89 } else { | 89 } else { |
90 info->status = kNetworkStatusDisconnected; | 90 info->status = kNetworkStatusDisconnected; |
91 info->message = l10n_util::GetStringUTF8( | 91 info->message = l10n_util::GetStringUTF8( |
92 IDS_STATUSBAR_NETWORK_DEVICE_DISCONNECTED); | 92 IDS_STATUSBAR_NETWORK_DEVICE_DISCONNECTED); |
93 } | 93 } |
94 } else { | |
95 info->status = kNetworkStatusDisconnected; | |
96 info->message = l10n_util::GetStringUTF8( | |
97 IDS_STATUSBAR_NETWORK_DEVICE_DISCONNECTED); | |
94 } | 98 } |
95 info->ip_address = wifi.ip_address(); | 99 info->ip_address = wifi.ip_address(); |
96 info->need_passphrase = wifi.encrypted(); | 100 info->need_passphrase = wifi.encrypted(); |
97 info->remembered = wifi.favorite(); | 101 info->remembered = wifi.favorite(); |
98 } else { | 102 } else { |
99 res = false; // Network not found, hide entry. | 103 res = false; // Network not found, hide entry. |
100 } | 104 } |
101 } else if (flags & FLAG_CELLULAR) { | 105 } else if (flags & FLAG_CELLULAR) { |
102 CellularNetwork cellular; | 106 CellularNetwork cellular; |
103 bool found = cros->FindCellularNetworkByPath( | 107 bool found = cros->FindCellularNetworkByPath( |
(...skipping 12 matching lines...) Expand all Loading... | |
116 IDS_STATUSBAR_NETWORK_DEVICE_CONNECTING) | 120 IDS_STATUSBAR_NETWORK_DEVICE_CONNECTING) |
117 + ": " + cellular.GetStateString(); | 121 + ": " + cellular.GetStateString(); |
118 } else if (cellular.state() == STATE_FAILURE) { | 122 } else if (cellular.state() == STATE_FAILURE) { |
119 info->status = kNetworkStatusError; | 123 info->status = kNetworkStatusError; |
120 info->message = cellular.GetErrorString(); | 124 info->message = cellular.GetErrorString(); |
121 } else { | 125 } else { |
122 info->status = kNetworkStatusDisconnected; | 126 info->status = kNetworkStatusDisconnected; |
123 info->message = l10n_util::GetStringUTF8( | 127 info->message = l10n_util::GetStringUTF8( |
124 IDS_STATUSBAR_NETWORK_DEVICE_DISCONNECTED); | 128 IDS_STATUSBAR_NETWORK_DEVICE_DISCONNECTED); |
125 } | 129 } |
130 } else { | |
131 info->status = kNetworkStatusDisconnected; | |
132 info->message = l10n_util::GetStringUTF8( | |
133 IDS_STATUSBAR_NETWORK_DEVICE_DISCONNECTED); | |
126 } | 134 } |
127 info->ip_address = cellular.ip_address(); | 135 info->ip_address = cellular.ip_address(); |
128 info->need_passphrase = false; | 136 info->need_passphrase = false; |
129 info->remembered = true; | 137 info->remembered = true; |
130 } else { | 138 } else { |
131 res = false; // Network not found, hide entry. | 139 res = false; // Network not found, hide entry. |
132 } | 140 } |
133 } else if (flags & FLAG_OTHER_NETWORK) { | 141 } else if (flags & FLAG_OTHER_NETWORK) { |
142 info->status = kNetworkStatusDisconnected; | |
143 info->message = l10n_util::GetStringUTF8( | |
144 IDS_STATUSBAR_NETWORK_DEVICE_DISCONNECTED); | |
134 info->network_type = kNetworkTypeOther; | 145 info->network_type = kNetworkTypeOther; |
135 info->need_passphrase = true; | 146 info->need_passphrase = true; |
136 info->remembered = true; | 147 info->remembered = true; |
137 } else { | 148 } else { |
138 // Not a network, e.g options, separator. | 149 // Not a network, e.g options, separator. |
139 } | 150 } |
140 return res; | 151 return res; |
141 } | 152 } |
142 | 153 |
154 void NetworkMenu::ConnectToNetworkAt(int index, | |
155 const std::string& passphrase, | |
156 const std::string& identity) const { | |
157 int flags = menu_items_[index].flags; | |
158 NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); | |
159 if (flags & FLAG_WIFI) { | |
160 WifiNetwork wifi; | |
161 bool found = cros->FindWifiNetworkByPath( | |
162 menu_items_[index].wireless_path, &wifi); | |
163 if (found) { | |
164 // Connect or reconnect. | |
165 if (wifi.encrypted()) { | |
166 if (wifi.IsCertificateLoaded()) { | |
167 cros->ConnectToWifiNetwork(wifi, std::string(), | |
168 std::string(), wifi.cert_path()); | |
169 } else { | |
170 // TODO(stevenjb): use passphrase/identity once provided. | |
171 // cros->ConnectToWifiNetwork(wifi, passphrase, | |
172 // identity, menu_items[index].path); | |
173 const bool kFocusLogin = true; | |
174 ShowNetworkConfigView(new NetworkConfigView(wifi, true), kFocusLogin); | |
175 } | |
176 } else { | |
177 cros->ConnectToWifiNetwork(wifi, std::string(), | |
178 std::string(), std::string()); | |
179 } | |
180 } | |
181 } else if (flags & FLAG_CELLULAR) { | |
182 CellularNetwork cellular; | |
183 bool found = cros->FindCellularNetworkByPath( | |
184 menu_items_[index].wireless_path, &cellular); | |
185 if (found) { | |
186 // Connect or reconnect. | |
187 cros->ConnectToCellularNetwork(cellular); | |
188 } | |
189 } else if (flags & FLAG_OTHER_NETWORK) { | |
190 const bool kFocusLogin = true; | |
191 ShowNetworkConfigView(new NetworkConfigView(), kFocusLogin); | |
192 } | |
193 } | |
194 | |
143 //////////////////////////////////////////////////////////////////////////////// | 195 //////////////////////////////////////////////////////////////////////////////// |
144 // NetworkMenu, menus::MenuModel implementation: | 196 // NetworkMenu, menus::MenuModel implementation: |
145 | 197 |
146 int NetworkMenu::GetItemCount() const { | 198 int NetworkMenu::GetItemCount() const { |
147 return static_cast<int>(menu_items_.size()); | 199 return static_cast<int>(menu_items_.size()); |
148 } | 200 } |
149 | 201 |
150 menus::MenuModel::ItemType NetworkMenu::GetTypeAt(int index) const { | 202 menus::MenuModel::ItemType NetworkMenu::GetTypeAt(int index) const { |
151 return menu_items_[index].type; | 203 return menu_items_[index].type; |
152 } | 204 } |
(...skipping 18 matching lines...) Expand all Loading... | |
171 *icon = menu_items_[index].icon; | 223 *icon = menu_items_[index].icon; |
172 return true; | 224 return true; |
173 } | 225 } |
174 return false; | 226 return false; |
175 } | 227 } |
176 | 228 |
177 bool NetworkMenu::IsEnabledAt(int index) const { | 229 bool NetworkMenu::IsEnabledAt(int index) const { |
178 return !(menu_items_[index].flags & FLAG_DISABLED); | 230 return !(menu_items_[index].flags & FLAG_DISABLED); |
179 } | 231 } |
180 | 232 |
181 void NetworkMenu::ShowTabbedNetworkSettings(const Network& network) { | |
182 Browser* browser = BrowserList::GetLastActive(); | |
183 if (!browser) | |
184 return; | |
185 std::string page = StringPrintf("%s?servicePath=%s&networkType=%d", | |
186 chrome::kInternetOptionsSubPage, | |
187 EscapeUrlEncodedData(network.service_path()).c_str(), | |
188 network.type()); | |
189 browser->ShowOptionsTab(page); | |
190 } | |
191 | |
192 void NetworkMenu::ActivatedAt(int index) { | 233 void NetworkMenu::ActivatedAt(int index) { |
193 // When we are refreshing the menu, ignore menu item activation. | 234 // When we are refreshing the menu, ignore menu item activation. |
194 if (refreshing_menu_) | 235 if (refreshing_menu_) |
195 return; | 236 return; |
196 | 237 |
197 NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); | 238 NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); |
198 int flags = menu_items_[index].flags; | 239 int flags = menu_items_[index].flags; |
199 if (flags & FLAG_OPTIONS) { | 240 if (flags & FLAG_OPTIONS) { |
200 OpenButtonOptions(); | 241 OpenButtonOptions(); |
201 } else if (flags & FLAG_TOGGLE_ETHERNET) { | 242 } else if (flags & FLAG_TOGGLE_ETHERNET) { |
202 cros->EnableEthernetNetworkDevice(!cros->ethernet_enabled()); | 243 cros->EnableEthernetNetworkDevice(!cros->ethernet_enabled()); |
203 } else if (flags & FLAG_TOGGLE_WIFI) { | 244 } else if (flags & FLAG_TOGGLE_WIFI) { |
204 cros->EnableWifiNetworkDevice(!cros->wifi_enabled()); | 245 cros->EnableWifiNetworkDevice(!cros->wifi_enabled()); |
205 } else if (flags & FLAG_TOGGLE_CELLULAR) { | 246 } else if (flags & FLAG_TOGGLE_CELLULAR) { |
206 cros->EnableCellularNetworkDevice(!cros->cellular_enabled()); | 247 cros->EnableCellularNetworkDevice(!cros->cellular_enabled()); |
207 } else if (flags & FLAG_TOGGLE_OFFLINE) { | 248 } else if (flags & FLAG_TOGGLE_OFFLINE) { |
208 cros->EnableOfflineMode(!cros->offline_mode()); | 249 cros->EnableOfflineMode(!cros->offline_mode()); |
209 } else if (flags & FLAG_OTHER_NETWORK) { | 250 } else if (flags & FLAG_OTHER_NETWORK) { |
210 NetworkConfigView* view = new NetworkConfigView(); | 251 const bool kFocusLogin = true; |
211 view->set_browser_mode(IsBrowserMode()); | 252 ShowNetworkConfigView(new NetworkConfigView(), kFocusLogin); |
212 views::Window* window = browser::CreateViewsWindow(GetNativeWindow(), | |
213 gfx::Rect(), | |
214 view); | |
215 window->SetIsAlwaysOnTop(true); | |
216 window->Show(); | |
217 view->SetLoginTextfieldFocus(); | |
218 } else if (flags & FLAG_ETHERNET) { | 253 } else if (flags & FLAG_ETHERNET) { |
219 if (cros->ethernet_connected()) { | 254 if (cros->ethernet_connected()) { |
220 if (CommandLine::ForCurrentProcess()->HasSwitch( | 255 if (CommandLine::ForCurrentProcess()->HasSwitch( |
221 switches::kEnableTabbedOptions)) { | 256 switches::kEnableTabbedOptions)) { |
222 ShowTabbedNetworkSettings(cros->ethernet_network()); | 257 ShowTabbedNetworkSettings(cros->ethernet_network()); |
223 } else { | 258 } else { |
224 NetworkConfigView* view = | 259 ShowNetworkConfigView( |
Charlie Lee
2010/10/15 06:34:32
while you are at it, add the const here also
| |
225 new NetworkConfigView(cros->ethernet_network()); | 260 new NetworkConfigView(cros->ethernet_network()), false); |
226 view->set_browser_mode(IsBrowserMode()); | |
227 views::Window* window = browser::CreateViewsWindow( | |
228 GetNativeWindow(), gfx::Rect(), view); | |
229 window->SetIsAlwaysOnTop(true); | |
230 window->Show(); | |
231 } | 261 } |
232 } | 262 } |
233 } else if (flags & FLAG_WIFI) { | 263 } else if (flags & FLAG_WIFI) { |
234 WifiNetwork wifi; | 264 WifiNetwork wifi; |
235 bool wifi_exists = cros->FindWifiNetworkByPath( | 265 bool wifi_exists = cros->FindWifiNetworkByPath( |
236 menu_items_[index].wireless_path, &wifi); | 266 menu_items_[index].wireless_path, &wifi); |
237 if (!wifi_exists) { | 267 if (!wifi_exists) { |
238 // If we are attempting to connect to a network that no longer exists, | 268 // If we are attempting to connect to a network that no longer exists, |
239 // display a notification. | 269 // display a notification. |
240 // TODO(stevenjb): Show notification. | 270 // TODO(stevenjb): Show notification. |
241 } else if (wifi.name() == cros->wifi_name()) { | 271 } else if (wifi.name() == cros->wifi_name()) { |
242 if (cros->wifi_connected()) { | 272 if (cros->wifi_connected()) { |
273 // If we are already connected, show the config settings. | |
243 if (CommandLine::ForCurrentProcess()->HasSwitch( | 274 if (CommandLine::ForCurrentProcess()->HasSwitch( |
244 switches::kEnableTabbedOptions)) { | 275 switches::kEnableTabbedOptions)) { |
245 ShowTabbedNetworkSettings(wifi); | 276 ShowTabbedNetworkSettings(wifi); |
246 } else { | 277 } else { |
247 // If we are already connected, open the config dialog. | 278 ShowNetworkConfigView(new NetworkConfigView(wifi, false), false); |
Charlie Lee
2010/10/15 06:34:32
and here
| |
248 NetworkConfigView* view = new NetworkConfigView(wifi, false); | |
249 view->set_browser_mode(IsBrowserMode()); | |
250 views::Window* window = browser::CreateViewsWindow( | |
251 GetNativeWindow(), gfx::Rect(), view); | |
252 window->SetIsAlwaysOnTop(true); | |
253 window->Show(); | |
254 } | 279 } |
255 } else { | 280 } else { |
256 // TODO(stevenjb): Connection in progress. Show dialog? | 281 // TODO(stevenjb): Connection in progress. Show dialog? |
257 } | 282 } |
258 } else { | 283 } else { |
259 // If wifi network is not encrypted, then directly connect. | 284 // If wifi network is not encrypted, then directly connect. |
260 // Otherwise, we open password dialog window. | 285 // Otherwise, open the password dialog window. |
261 if (!wifi.encrypted()) { | 286 if (!wifi.encrypted()) { |
262 cros->ConnectToWifiNetwork(wifi, std::string(), | 287 cros->ConnectToWifiNetwork(wifi, std::string(), |
263 std::string(), std::string()); | 288 std::string(), std::string()); |
264 } else { | 289 } else { |
265 NetworkConfigView* view = new NetworkConfigView(wifi, true); | 290 const bool kFocusLogin = true; |
266 view->set_browser_mode(IsBrowserMode()); | 291 ShowNetworkConfigView(new NetworkConfigView(wifi, true), kFocusLogin); |
267 views::Window* window = browser::CreateViewsWindow( | |
268 GetNativeWindow(), gfx::Rect(), view); | |
269 window->SetIsAlwaysOnTop(true); | |
270 window->Show(); | |
271 view->SetLoginTextfieldFocus(); | |
272 } | 292 } |
273 } | 293 } |
274 } else if (flags & FLAG_CELLULAR) { | 294 } else if (flags & FLAG_CELLULAR) { |
275 CellularNetwork cellular; | 295 CellularNetwork cellular; |
276 bool cellular_exists = cros->FindCellularNetworkByPath( | 296 bool cellular_exists = cros->FindCellularNetworkByPath( |
277 menu_items_[index].wireless_path, &cellular); | 297 menu_items_[index].wireless_path, &cellular); |
278 | 298 |
279 if (!cellular_exists) { | 299 if (!cellular_exists) { |
280 // If we are attempting to connect to a network that no longer exists, | 300 // If we are attempting to connect to a network that no longer exists, |
281 // display a notification. | 301 // display a notification. |
282 // TODO(stevenjb): Show notification. | 302 // TODO(stevenjb): Show notification. |
283 } else if (cellular.name() == cros->cellular_name()) { | 303 } else if (cellular.name() == cros->cellular_name()) { |
284 // If clicked on a network that we are already connected to or we are | 304 // If clicked on a network that we are already connected to or we are |
285 // currently trying to connect to, then open config dialog. | 305 // currently trying to connect to, then open config dialog. |
286 if (cros->cellular_connected()) { | 306 if (cros->cellular_connected()) { |
287 if (CommandLine::ForCurrentProcess()->HasSwitch( | 307 if (CommandLine::ForCurrentProcess()->HasSwitch( |
288 switches::kEnableTabbedOptions)) { | 308 switches::kEnableTabbedOptions)) { |
289 ShowTabbedNetworkSettings(cellular); | 309 ShowTabbedNetworkSettings(cellular); |
290 } else { | 310 } else { |
291 NetworkConfigView* view = new NetworkConfigView(cellular); | 311 ShowNetworkConfigView(new NetworkConfigView(cellular), false); |
292 view->set_browser_mode(IsBrowserMode()); | |
293 views::Window* window = browser::CreateViewsWindow( | |
294 GetNativeWindow(), gfx::Rect(), view); | |
295 window->SetIsAlwaysOnTop(true); | |
296 window->Show(); | |
297 } | 312 } |
298 } else { | 313 } else { |
299 // TODO(stevenjb): Connection in progress. Show dialog? | 314 // TODO(stevenjb): Connection in progress. Show dialog? |
300 } | 315 } |
301 } else { | 316 } else { |
302 cros->ConnectToCellularNetwork(cellular); | 317 cros->ConnectToCellularNetwork(cellular); |
303 } | 318 } |
304 } | 319 } |
305 } | 320 } |
306 | 321 |
307 void NetworkMenu::SetFirstLevelMenuWidth(int width) { | 322 void NetworkMenu::SetFirstLevelMenuWidth(int width) { |
308 min_width_ = width; | 323 min_width_ = width; |
309 // This actually has no effect since menu is rebuilt before showing. | 324 // This actually has no effect since menu is rebuilt before showing. |
310 network_menu_->SetMinimumWidth(width); | 325 network_menu_->SetMinimumWidth(width); |
311 } | 326 } |
312 | 327 |
313 void NetworkMenu::CancelMenu() { | 328 void NetworkMenu::CancelMenu() { |
314 network_menu_->CancelMenu(); | 329 network_menu_->CancelMenu(); |
315 } | 330 } |
316 | 331 |
332 void NetworkMenu::UpdateMenu() { | |
333 refreshing_menu_ = true; | |
334 InitMenuItems(); | |
335 network_menu_->Rebuild(); | |
336 refreshing_menu_ = false; | |
337 } | |
338 | |
317 // static | 339 // static |
318 SkBitmap NetworkMenu::IconForNetworkStrength(int strength, bool black) { | 340 SkBitmap NetworkMenu::IconForNetworkStrength(int strength, bool black) { |
319 // Compose wifi icon by superimposing various icons. | 341 // Compose wifi icon by superimposing various icons. |
320 // NOTE: Use an array rather than just calculating a resource number to avoid | 342 // NOTE: Use an array rather than just calculating a resource number to avoid |
321 // creating implicit ordering dependencies on the resource values. | 343 // creating implicit ordering dependencies on the resource values. |
322 static const int kBarsImages[kNumWifiImages] = { | 344 static const int kBarsImages[kNumWifiImages] = { |
323 IDR_STATUSBAR_NETWORK_BARS1, | 345 IDR_STATUSBAR_NETWORK_BARS1, |
324 IDR_STATUSBAR_NETWORK_BARS2, | 346 IDR_STATUSBAR_NETWORK_BARS2, |
325 IDR_STATUSBAR_NETWORK_BARS3, | 347 IDR_STATUSBAR_NETWORK_BARS3, |
326 IDR_STATUSBAR_NETWORK_BARS4, | 348 IDR_STATUSBAR_NETWORK_BARS4, |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
371 //////////////////////////////////////////////////////////////////////////////// | 393 //////////////////////////////////////////////////////////////////////////////// |
372 // NetworkMenu, views::ViewMenuDelegate implementation: | 394 // NetworkMenu, views::ViewMenuDelegate implementation: |
373 | 395 |
374 void NetworkMenu::RunMenu(views::View* source, const gfx::Point& pt) { | 396 void NetworkMenu::RunMenu(views::View* source, const gfx::Point& pt) { |
375 refreshing_menu_ = true; | 397 refreshing_menu_ = true; |
376 NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); | 398 NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); |
377 cros->RequestWifiScan(); | 399 cros->RequestWifiScan(); |
378 cros->UpdateSystemInfo(); | 400 cros->UpdateSystemInfo(); |
379 InitMenuItems(); | 401 InitMenuItems(); |
380 network_menu_->Rebuild(); | 402 network_menu_->Rebuild(); |
381 network_menu_->UpdateStates(); | |
382 // Restore menu width, if it was set up. | 403 // Restore menu width, if it was set up. |
383 // NOTE: width isn't checked for correctness here since all width-related | 404 // NOTE: width isn't checked for correctness here since all width-related |
384 // logic implemented inside |network_menu_|. | 405 // logic implemented inside |network_menu_|. |
385 if (min_width_ != -1) | 406 if (min_width_ != -1) |
386 network_menu_->SetMinimumWidth(min_width_); | 407 network_menu_->SetMinimumWidth(min_width_); |
387 refreshing_menu_ = false; | 408 refreshing_menu_ = false; |
388 network_menu_->RunMenuAt(pt, views::Menu2::ALIGN_TOPRIGHT); | 409 network_menu_->RunMenuAt(pt, views::Menu2::ALIGN_TOPRIGHT); |
389 } | 410 } |
390 | 411 |
391 void NetworkMenu::InitMenuItems() { | 412 void NetworkMenu::InitMenuItems() { |
413 // This gets called on initialization, so any changes should be reflected | |
414 // in CrosMock::SetNetworkLibraryStatusAreaExpectations(). | |
415 | |
392 menu_items_.clear(); | 416 menu_items_.clear(); |
393 // Populate our MenuItems with the current list of wifi networks. | 417 // Populate our MenuItems with the current list of wifi networks. |
394 NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); | 418 NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); |
395 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 419 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
396 | 420 |
397 // Ethernet | 421 // Ethernet |
422 bool ethernet_connected = cros->ethernet_connected(); | |
423 bool ethernet_connecting = cros->ethernet_connecting(); | |
398 string16 label = l10n_util::GetStringUTF16( | 424 string16 label = l10n_util::GetStringUTF16( |
399 IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET); | 425 IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET); |
400 SkBitmap icon = *rb.GetBitmapNamed(IDR_STATUSBAR_WIRED_BLACK); | 426 SkBitmap icon = *rb.GetBitmapNamed(IDR_STATUSBAR_WIRED_BLACK); |
401 SkBitmap badge = cros->ethernet_connecting() || cros->ethernet_connected() ? | 427 SkBitmap badge = ethernet_connecting || ethernet_connected ? |
402 SkBitmap() : *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_DISCONNECTED); | 428 SkBitmap() : *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_DISCONNECTED); |
403 int flag = (cros->ethernet_connecting() || cros->ethernet_connected()) ? | 429 int flag = (ethernet_connecting || ethernet_connected) ? |
404 FLAG_ETHERNET | FLAG_ASSOCIATED : FLAG_ETHERNET; | 430 FLAG_ETHERNET | FLAG_ASSOCIATED : FLAG_ETHERNET; |
405 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 431 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
406 IconForDisplay(icon, badge), std::string(), flag)); | 432 IconForDisplay(icon, badge), std::string(), flag)); |
407 | 433 |
408 // Wifi | 434 // Wifi |
409 const WifiNetworkVector& wifi_networks = cros->wifi_networks(); | 435 const WifiNetworkVector& wifi_networks = cros->wifi_networks(); |
436 const std::string& active_wifi_name = cros->wifi_name(); | |
410 // Wifi networks ssids. | 437 // Wifi networks ssids. |
411 for (size_t i = 0; i < wifi_networks.size(); ++i) { | 438 for (size_t i = 0; i < wifi_networks.size(); ++i) { |
412 label = ASCIIToUTF16(wifi_networks[i].name()); | 439 label = ASCIIToUTF16(wifi_networks[i].name()); |
413 SkBitmap icon = IconForNetworkStrength(wifi_networks[i].strength(), true); | 440 SkBitmap icon = IconForNetworkStrength(wifi_networks[i].strength(), true); |
414 SkBitmap badge = wifi_networks[i].encrypted() ? | 441 SkBitmap badge = wifi_networks[i].encrypted() ? |
415 *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_SECURE) : SkBitmap(); | 442 *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_SECURE) : SkBitmap(); |
416 flag = (wifi_networks[i].name() == cros->wifi_name()) ? | 443 flag = (wifi_networks[i].name() == active_wifi_name) ? |
417 FLAG_WIFI | FLAG_ASSOCIATED : FLAG_WIFI; | 444 FLAG_WIFI | FLAG_ASSOCIATED : FLAG_WIFI; |
418 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 445 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
419 IconForDisplay(icon, badge), wifi_networks[i].service_path(), flag)); | 446 IconForDisplay(icon, badge), wifi_networks[i].service_path(), flag)); |
420 } | 447 } |
421 | 448 |
422 // Cellular | 449 // Cellular |
423 const CellularNetworkVector& cell_networks = cros->cellular_networks(); | 450 const CellularNetworkVector& cell_networks = cros->cellular_networks(); |
451 const std::string& active_cellular_name = cros->cellular_name(); | |
424 // Cellular networks ssids. | 452 // Cellular networks ssids. |
425 for (size_t i = 0; i < cell_networks.size(); ++i) { | 453 for (size_t i = 0; i < cell_networks.size(); ++i) { |
426 label = ASCIIToUTF16(cell_networks[i].name()); | 454 label = ASCIIToUTF16(cell_networks[i].name()); |
427 SkBitmap icon = IconForNetworkStrength(cell_networks[i].strength(), true); | 455 SkBitmap icon = IconForNetworkStrength(cell_networks[i].strength(), true); |
428 // TODO(chocobo): Check cellular network 3g/edge. | 456 // TODO(chocobo): Check cellular network 3g/edge. |
429 SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_3G); | 457 SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_3G); |
430 // SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_EDGE); | 458 // SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_EDGE); |
431 flag = (cell_networks[i].name() == cros->cellular_name()) ? | 459 flag = (cell_networks[i].name() == active_cellular_name) ? |
432 FLAG_CELLULAR | FLAG_ASSOCIATED : FLAG_CELLULAR; | 460 FLAG_CELLULAR | FLAG_ASSOCIATED : FLAG_CELLULAR; |
433 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 461 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
434 IconForDisplay(icon, badge), cell_networks[i].service_path(), flag)); | 462 IconForDisplay(icon, badge), cell_networks[i].service_path(), flag)); |
435 } | 463 } |
436 | 464 |
437 // No networks available message. | 465 // No networks available message. |
438 if (wifi_networks.empty() && cell_networks.empty()) { | 466 if (wifi_networks.empty() && cell_networks.empty()) { |
439 label = l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_MENU_ITEM_INDENT, | 467 label = l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_MENU_ITEM_INDENT, |
440 l10n_util::GetStringUTF16(IDS_STATUSBAR_NO_NETWORKS_MESSAGE)); | 468 l10n_util::GetStringUTF16(IDS_STATUSBAR_NO_NETWORKS_MESSAGE)); |
441 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 469 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
442 SkBitmap(), std::string(), FLAG_DISABLED)); | 470 SkBitmap(), std::string(), FLAG_DISABLED)); |
443 } | 471 } |
444 | 472 |
445 // Other networks | 473 // Other networks |
446 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, | 474 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, |
447 l10n_util::GetStringUTF16(IDS_OPTIONS_SETTINGS_OTHER_NETWORKS), | 475 l10n_util::GetStringUTF16(IDS_OPTIONS_SETTINGS_OTHER_NETWORKS), |
448 IconForDisplay(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0), | 476 IconForDisplay(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0), |
449 SkBitmap()), | 477 SkBitmap()), |
450 std::string(), FLAG_OTHER_NETWORK)); | 478 std::string(), FLAG_OTHER_NETWORK)); |
451 | 479 |
452 if (cros->wifi_available() || cros->cellular_available()) { | 480 bool wifi_available = cros->wifi_available(); |
481 bool cellular_available = cros->cellular_available(); | |
482 if (wifi_available || cellular_available) { | |
453 // Separator. | 483 // Separator. |
454 menu_items_.push_back(MenuItem()); | 484 menu_items_.push_back(MenuItem()); |
455 | 485 |
456 // Turn Wifi Off. (only if wifi available) | 486 // Turn Wifi Off. (only if wifi available) |
457 if (cros->wifi_available()) { | 487 if (wifi_available) { |
458 int id = cros->wifi_enabled() ? IDS_STATUSBAR_NETWORK_DEVICE_DISABLE : | 488 int id = cros->wifi_enabled() ? IDS_STATUSBAR_NETWORK_DEVICE_DISABLE : |
459 IDS_STATUSBAR_NETWORK_DEVICE_ENABLE; | 489 IDS_STATUSBAR_NETWORK_DEVICE_ENABLE; |
460 label = l10n_util::GetStringFUTF16(id, | 490 label = l10n_util::GetStringFUTF16(id, |
461 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_WIFI)); | 491 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_WIFI)); |
462 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 492 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
463 SkBitmap(), std::string(), FLAG_TOGGLE_WIFI)); | 493 SkBitmap(), std::string(), FLAG_TOGGLE_WIFI)); |
464 } | 494 } |
465 | 495 |
466 // Turn Cellular Off. (only if cellular available) | 496 // Turn Cellular Off. (only if cellular available) |
467 if (cros->cellular_available()) { | 497 if (cellular_available) { |
468 int id = cros->cellular_enabled() ? IDS_STATUSBAR_NETWORK_DEVICE_DISABLE : | 498 int id = cros->cellular_enabled() ? IDS_STATUSBAR_NETWORK_DEVICE_DISABLE : |
469 IDS_STATUSBAR_NETWORK_DEVICE_ENABLE; | 499 IDS_STATUSBAR_NETWORK_DEVICE_ENABLE; |
470 label = l10n_util::GetStringFUTF16(id, | 500 label = l10n_util::GetStringFUTF16(id, |
471 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_CELLULAR)); | 501 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_CELLULAR)); |
472 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 502 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
473 SkBitmap(), std::string(), FLAG_TOGGLE_CELLULAR)); | 503 SkBitmap(), std::string(), FLAG_TOGGLE_CELLULAR)); |
474 } | 504 } |
475 } | 505 } |
476 | 506 |
477 // TODO(chocobo): Uncomment once we figure out how to do offline mode. | 507 // TODO(chocobo): Uncomment once we figure out how to do offline mode. |
(...skipping 10 matching lines...) Expand all Loading... | |
488 // Network settings. | 518 // Network settings. |
489 if (ShouldOpenButtonOptions()) { | 519 if (ShouldOpenButtonOptions()) { |
490 label = | 520 label = |
491 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_OPEN_OPTIONS_DIALOG); | 521 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_OPEN_OPTIONS_DIALOG); |
492 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 522 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
493 SkBitmap(), std::string(), FLAG_OPTIONS)); | 523 SkBitmap(), std::string(), FLAG_OPTIONS)); |
494 } | 524 } |
495 } | 525 } |
496 } | 526 } |
497 | 527 |
528 void NetworkMenu::ShowTabbedNetworkSettings(const Network& network) { | |
529 Browser* browser = BrowserList::GetLastActive(); | |
530 if (!browser) | |
531 return; | |
532 std::string page = StringPrintf("%s?servicePath=%s&networkType=%d", | |
533 chrome::kInternetOptionsSubPage, | |
534 EscapeUrlEncodedData(network.service_path()).c_str(), | |
535 network.type()); | |
536 browser->ShowOptionsTab(page); | |
537 } | |
538 | |
539 // TODO(stevenjb): deprecate this once all of the UI is embedded in the menu. | |
540 void NetworkMenu::ShowNetworkConfigView(NetworkConfigView* view, | |
541 bool focus_login) const { | |
542 view->set_browser_mode(IsBrowserMode()); | |
543 views::Window* window = browser::CreateViewsWindow( | |
544 GetNativeWindow(), gfx::Rect(), view); | |
545 window->SetIsAlwaysOnTop(true); | |
546 window->Show(); | |
547 if (focus_login) | |
548 view->SetLoginTextfieldFocus(); | |
549 } | |
550 | |
498 } // namespace chromeos | 551 } // namespace chromeos |
OLD | NEW |