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_button.h" | 5 #include "chrome/browser/chromeos/status/network_menu_button.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 | 8 |
9 #include "app/l10n_util.h" | 9 #include "app/l10n_util.h" |
10 #include "app/resource_bundle.h" | 10 #include "app/resource_bundle.h" |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 } else if (flags & FLAG_ETHERNET) { | 109 } else if (flags & FLAG_ETHERNET) { |
110 if (cros->ethernet_connected()) { | 110 if (cros->ethernet_connected()) { |
111 NetworkConfigView* view = new NetworkConfigView(cros->ethernet_network()); | 111 NetworkConfigView* view = new NetworkConfigView(cros->ethernet_network()); |
112 view->set_browser_mode(host_->IsBrowserMode()); | 112 view->set_browser_mode(host_->IsBrowserMode()); |
113 views::Window* window = views::Window::CreateChromeWindow( | 113 views::Window* window = views::Window::CreateChromeWindow( |
114 host_->GetNativeWindow(), gfx::Rect(), view); | 114 host_->GetNativeWindow(), gfx::Rect(), view); |
115 window->SetIsAlwaysOnTop(true); | 115 window->SetIsAlwaysOnTop(true); |
116 window->Show(); | 116 window->Show(); |
117 } | 117 } |
118 } else if (flags & FLAG_WIFI) { | 118 } else if (flags & FLAG_WIFI) { |
119 WifiNetwork wifi = menu_items_[index].wifi_network; | 119 WifiNetwork wifi; |
120 | 120 bool wifi_exists = cros->FindWifiNetworkByPath( |
121 // If clicked on a network that we are already connected to or we are | 121 menu_items_[index].wireless_path, &wifi); |
122 // currently trying to connect to, then open config dialog. | 122 if (!wifi_exists) { |
123 if (wifi.name() == cros->wifi_name()) { | 123 // If we are attempting to connect to a network that no longer exists, |
| 124 // display a notification. |
| 125 // TODO(stevenjb): Show notification. |
| 126 } else if (wifi.name() == cros->wifi_name()) { |
124 if (cros->wifi_connected()) { | 127 if (cros->wifi_connected()) { |
| 128 // If we are already connected, open the config dialog. |
125 NetworkConfigView* view = new NetworkConfigView(wifi, false); | 129 NetworkConfigView* view = new NetworkConfigView(wifi, false); |
126 view->set_browser_mode(host_->IsBrowserMode()); | 130 view->set_browser_mode(host_->IsBrowserMode()); |
127 views::Window* window = views::Window::CreateChromeWindow( | 131 views::Window* window = views::Window::CreateChromeWindow( |
128 host_->GetNativeWindow(), gfx::Rect(), view); | 132 host_->GetNativeWindow(), gfx::Rect(), view); |
129 window->SetIsAlwaysOnTop(true); | 133 window->SetIsAlwaysOnTop(true); |
130 window->Show(); | 134 window->Show(); |
| 135 } else { |
| 136 // TODO(stevenjb): Connection in progress. Show dialog? |
131 } | 137 } |
132 } else { | 138 } else { |
133 // If wifi network is not encrypted, then directly connect. | 139 // If wifi network is not encrypted, then directly connect. |
134 // Otherwise, we open password dialog window. | 140 // Otherwise, we open password dialog window. |
135 if (!wifi.encrypted()) { | 141 if (!wifi.encrypted()) { |
136 cros->ConnectToWifiNetwork(wifi, string16(), string16(), string16()); | 142 cros->ConnectToWifiNetwork(wifi, string16(), string16(), string16()); |
137 } else { | 143 } else { |
138 NetworkConfigView* view = new NetworkConfigView(wifi, true); | 144 NetworkConfigView* view = new NetworkConfigView(wifi, true); |
139 view->set_browser_mode(host_->IsBrowserMode()); | 145 view->set_browser_mode(host_->IsBrowserMode()); |
140 views::Window* window = views::Window::CreateChromeWindow( | 146 views::Window* window = views::Window::CreateChromeWindow( |
141 host_->GetNativeWindow(), gfx::Rect(), view); | 147 host_->GetNativeWindow(), gfx::Rect(), view); |
142 window->SetIsAlwaysOnTop(true); | 148 window->SetIsAlwaysOnTop(true); |
143 window->Show(); | 149 window->Show(); |
144 view->SetLoginTextfieldFocus(); | 150 view->SetLoginTextfieldFocus(); |
145 } | 151 } |
146 } | 152 } |
147 } else if (flags & FLAG_CELLULAR) { | 153 } else if (flags & FLAG_CELLULAR) { |
148 CellularNetwork cellular = menu_items_[index].cellular_network; | 154 CellularNetwork cellular; |
| 155 bool cellular_exists = cros->FindCellularNetworkByPath( |
| 156 menu_items_[index].wireless_path, &cellular); |
149 | 157 |
150 // If clicked on a network that we are already connected to or we are | 158 if (!cellular_exists) { |
151 // currently trying to connect to, then open config dialog. | 159 // If we are attempting to connect to a network that no longer exists, |
152 if (cellular.name() == cros->cellular_name()) { | 160 // display a notification. |
| 161 // TODO(stevenjb): Show notification. |
| 162 } else if (cellular.name() == cros->cellular_name()) { |
| 163 // If clicked on a network that we are already connected to or we are |
| 164 // currently trying to connect to, then open config dialog. |
153 if (cros->cellular_connected()) { | 165 if (cros->cellular_connected()) { |
154 NetworkConfigView* view = new NetworkConfigView(cellular); | 166 NetworkConfigView* view = new NetworkConfigView(cellular); |
155 view->set_browser_mode(host_->IsBrowserMode()); | 167 view->set_browser_mode(host_->IsBrowserMode()); |
156 views::Window* window = views::Window::CreateChromeWindow( | 168 views::Window* window = views::Window::CreateChromeWindow( |
157 host_->GetNativeWindow(), gfx::Rect(), view); | 169 host_->GetNativeWindow(), gfx::Rect(), view); |
158 window->SetIsAlwaysOnTop(true); | 170 window->SetIsAlwaysOnTop(true); |
159 window->Show(); | 171 window->Show(); |
| 172 } else { |
| 173 // TODO(stevenjb): Connection in progress. Show dialog? |
160 } | 174 } |
161 } else { | 175 } else { |
162 cros->ConnectToCellularNetwork(cellular); | 176 cros->ConnectToCellularNetwork(cellular); |
163 } | 177 } |
164 } | 178 } |
165 } | 179 } |
166 | 180 |
167 //////////////////////////////////////////////////////////////////////////////// | 181 //////////////////////////////////////////////////////////////////////////////// |
168 // NetworkMenuButton, AnimationDelegate implementation: | 182 // NetworkMenuButton, AnimationDelegate implementation: |
169 | 183 |
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
415 | 429 |
416 // Ethernet | 430 // Ethernet |
417 string16 label = l10n_util::GetStringUTF16( | 431 string16 label = l10n_util::GetStringUTF16( |
418 IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET); | 432 IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET); |
419 SkBitmap icon = *rb.GetBitmapNamed(IDR_STATUSBAR_WIRED_BLACK); | 433 SkBitmap icon = *rb.GetBitmapNamed(IDR_STATUSBAR_WIRED_BLACK); |
420 SkBitmap badge = cros->ethernet_connecting() || cros->ethernet_connected() ? | 434 SkBitmap badge = cros->ethernet_connecting() || cros->ethernet_connected() ? |
421 SkBitmap() : *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_DISCONNECTED); | 435 SkBitmap() : *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_DISCONNECTED); |
422 int flag = (cros->ethernet_connecting() || cros->ethernet_connected()) ? | 436 int flag = (cros->ethernet_connecting() || cros->ethernet_connected()) ? |
423 FLAG_ETHERNET | FLAG_ASSOCIATED : FLAG_ETHERNET; | 437 FLAG_ETHERNET | FLAG_ASSOCIATED : FLAG_ETHERNET; |
424 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 438 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
425 IconForDisplay(icon, badge), WifiNetwork(), CellularNetwork(), flag)); | 439 IconForDisplay(icon, badge), std::string(), flag)); |
426 | 440 |
427 // Wifi | 441 // Wifi |
428 const WifiNetworkVector& wifi_networks = cros->wifi_networks(); | 442 const WifiNetworkVector& wifi_networks = cros->wifi_networks(); |
429 // Wifi networks ssids. | 443 // Wifi networks ssids. |
430 for (size_t i = 0; i < wifi_networks.size(); ++i) { | 444 for (size_t i = 0; i < wifi_networks.size(); ++i) { |
431 label = ASCIIToUTF16(wifi_networks[i].name()); | 445 label = ASCIIToUTF16(wifi_networks[i].name()); |
432 SkBitmap icon = IconForNetworkStrength(wifi_networks[i].strength(), true); | 446 SkBitmap icon = IconForNetworkStrength(wifi_networks[i].strength(), true); |
433 SkBitmap badge = wifi_networks[i].encrypted() ? | 447 SkBitmap badge = wifi_networks[i].encrypted() ? |
434 *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_SECURE) : SkBitmap(); | 448 *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_SECURE) : SkBitmap(); |
435 flag = (wifi_networks[i].name() == cros->wifi_name()) ? | 449 flag = (wifi_networks[i].name() == cros->wifi_name()) ? |
436 FLAG_WIFI | FLAG_ASSOCIATED : FLAG_WIFI; | 450 FLAG_WIFI | FLAG_ASSOCIATED : FLAG_WIFI; |
437 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 451 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
438 IconForDisplay(icon, badge), wifi_networks[i], CellularNetwork(), | 452 IconForDisplay(icon, badge), wifi_networks[i].service_path(), flag)); |
439 flag)); | |
440 } | 453 } |
441 | 454 |
442 // Cellular | 455 // Cellular |
443 const CellularNetworkVector& cell_networks = cros->cellular_networks(); | 456 const CellularNetworkVector& cell_networks = cros->cellular_networks(); |
444 // Cellular networks ssids. | 457 // Cellular networks ssids. |
445 for (size_t i = 0; i < cell_networks.size(); ++i) { | 458 for (size_t i = 0; i < cell_networks.size(); ++i) { |
446 label = ASCIIToUTF16(cell_networks[i].name()); | 459 label = ASCIIToUTF16(cell_networks[i].name()); |
447 SkBitmap icon = IconForNetworkStrength(cell_networks[i].strength(), true); | 460 SkBitmap icon = IconForNetworkStrength(cell_networks[i].strength(), true); |
448 // TODO(chocobo): Check cellular network 3g/edge. | 461 // TODO(chocobo): Check cellular network 3g/edge. |
449 SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_3G); | 462 SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_3G); |
450 // SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_EDGE); | 463 // SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_EDGE); |
451 flag = (cell_networks[i].name() == cros->cellular_name()) ? | 464 flag = (cell_networks[i].name() == cros->cellular_name()) ? |
452 FLAG_CELLULAR | FLAG_ASSOCIATED : FLAG_CELLULAR; | 465 FLAG_CELLULAR | FLAG_ASSOCIATED : FLAG_CELLULAR; |
453 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 466 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
454 IconForDisplay(icon, badge), WifiNetwork(), cell_networks[i], flag)); | 467 IconForDisplay(icon, badge), cell_networks[i].service_path(), flag)); |
455 } | 468 } |
456 | 469 |
457 // No networks available message. | 470 // No networks available message. |
458 if (wifi_networks.empty() && cell_networks.empty()) { | 471 if (wifi_networks.empty() && cell_networks.empty()) { |
459 label = l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_MENU_ITEM_INDENT, | 472 label = l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_MENU_ITEM_INDENT, |
460 l10n_util::GetStringUTF16(IDS_STATUSBAR_NO_NETWORKS_MESSAGE)); | 473 l10n_util::GetStringUTF16(IDS_STATUSBAR_NO_NETWORKS_MESSAGE)); |
461 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 474 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
462 SkBitmap(), WifiNetwork(), CellularNetwork(), FLAG_DISABLED)); | 475 SkBitmap(), std::string(), FLAG_DISABLED)); |
463 } | 476 } |
464 | 477 |
465 // Other networks | 478 // Other networks |
466 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, | 479 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, |
467 l10n_util::GetStringUTF16(IDS_OPTIONS_SETTINGS_OTHER_NETWORKS), | 480 l10n_util::GetStringUTF16(IDS_OPTIONS_SETTINGS_OTHER_NETWORKS), |
468 IconForDisplay(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0), | 481 IconForDisplay(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0), |
469 SkBitmap()), | 482 SkBitmap()), |
470 WifiNetwork(), CellularNetwork(), FLAG_OTHER_NETWORK)); | 483 std::string(), FLAG_OTHER_NETWORK)); |
471 | 484 |
472 if (cros->wifi_available() || cros->cellular_available()) { | 485 if (cros->wifi_available() || cros->cellular_available()) { |
473 // Separator. | 486 // Separator. |
474 menu_items_.push_back(MenuItem()); | 487 menu_items_.push_back(MenuItem()); |
475 | 488 |
476 // Turn Wifi Off. (only if wifi available) | 489 // Turn Wifi Off. (only if wifi available) |
477 if (cros->wifi_available()) { | 490 if (cros->wifi_available()) { |
478 int id = cros->wifi_enabled() ? IDS_STATUSBAR_NETWORK_DEVICE_DISABLE : | 491 int id = cros->wifi_enabled() ? IDS_STATUSBAR_NETWORK_DEVICE_DISABLE : |
479 IDS_STATUSBAR_NETWORK_DEVICE_ENABLE; | 492 IDS_STATUSBAR_NETWORK_DEVICE_ENABLE; |
480 label = l10n_util::GetStringFUTF16(id, | 493 label = l10n_util::GetStringFUTF16(id, |
481 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_WIFI)); | 494 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_WIFI)); |
482 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 495 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
483 SkBitmap(), WifiNetwork(), CellularNetwork(), FLAG_TOGGLE_WIFI)); | 496 SkBitmap(), std::string(), FLAG_TOGGLE_WIFI)); |
484 } | 497 } |
485 | 498 |
486 // Turn Cellular Off. (only if cellular available) | 499 // Turn Cellular Off. (only if cellular available) |
487 if (cros->cellular_available()) { | 500 if (cros->cellular_available()) { |
488 int id = cros->cellular_enabled() ? IDS_STATUSBAR_NETWORK_DEVICE_DISABLE : | 501 int id = cros->cellular_enabled() ? IDS_STATUSBAR_NETWORK_DEVICE_DISABLE : |
489 IDS_STATUSBAR_NETWORK_DEVICE_ENABLE; | 502 IDS_STATUSBAR_NETWORK_DEVICE_ENABLE; |
490 label = l10n_util::GetStringFUTF16(id, | 503 label = l10n_util::GetStringFUTF16(id, |
491 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_CELLULAR)); | 504 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_CELLULAR)); |
492 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 505 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
493 SkBitmap(), WifiNetwork(), CellularNetwork(), FLAG_TOGGLE_CELLULAR)); | 506 SkBitmap(), std::string(), FLAG_TOGGLE_CELLULAR)); |
494 } | 507 } |
495 } | 508 } |
496 | 509 |
497 // TODO(chocobo): Uncomment once we figure out how to do offline mode. | 510 // TODO(chocobo): Uncomment once we figure out how to do offline mode. |
498 // Offline mode. | 511 // Offline mode. |
499 // menu_items_.push_back(MenuItem(cros->offline_mode() ? | 512 // menu_items_.push_back(MenuItem(cros->offline_mode() ? |
500 // menus::MenuModel::TYPE_CHECK : menus::MenuModel::TYPE_COMMAND, | 513 // menus::MenuModel::TYPE_CHECK : menus::MenuModel::TYPE_COMMAND, |
501 // l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_OFFLINE_MODE), | 514 // l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_OFFLINE_MODE), |
502 // SkBitmap(), WifiNetwork(), CellularNetwork(), FLAG_TOGGLE_OFFLINE)); | 515 // SkBitmap(), std::string(), FLAG_TOGGLE_OFFLINE)); |
503 | 516 |
504 if (cros->Connected() || host_->ShouldOpenButtonOptions(this)) { | 517 if (cros->Connected() || host_->ShouldOpenButtonOptions(this)) { |
505 // Separator. | 518 // Separator. |
506 menu_items_.push_back(MenuItem()); | 519 menu_items_.push_back(MenuItem()); |
507 | 520 |
508 // IP address | 521 // IP address |
509 if (cros->Connected()) { | 522 if (cros->Connected()) { |
510 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, | 523 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, |
511 ASCIIToUTF16(cros->IPAddress()), SkBitmap(), | 524 ASCIIToUTF16(cros->IPAddress()), SkBitmap(), |
512 WifiNetwork(), CellularNetwork(), FLAG_DISABLED)); | 525 std::string(), FLAG_DISABLED)); |
513 } | 526 } |
514 | 527 |
515 // Network settings. | 528 // Network settings. |
516 if (host_->ShouldOpenButtonOptions(this)) { | 529 if (host_->ShouldOpenButtonOptions(this)) { |
517 label = | 530 label = |
518 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_OPEN_OPTIONS_DIALOG); | 531 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_OPEN_OPTIONS_DIALOG); |
519 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 532 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
520 SkBitmap(), WifiNetwork(), CellularNetwork(), FLAG_OPTIONS)); | 533 SkBitmap(), std::string(), FLAG_OPTIONS)); |
521 } | 534 } |
522 } | 535 } |
523 } | 536 } |
524 | 537 |
525 } // namespace chromeos | 538 } // namespace chromeos |
OLD | NEW |