| 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 |