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 <algorithm> | |
dhg
2010/08/12 15:47:25
Whats this used for?
| |
7 #include <limits> | 8 #include <limits> |
8 | 9 |
9 #include "app/l10n_util.h" | 10 #include "app/l10n_util.h" |
10 #include "app/resource_bundle.h" | 11 #include "app/resource_bundle.h" |
11 #include "base/string_util.h" | 12 #include "base/string_util.h" |
12 #include "base/utf_string_conversions.h" | 13 #include "base/utf_string_conversions.h" |
13 #include "chrome/browser/chromeos/cros/cros_library.h" | 14 #include "chrome/browser/chromeos/cros/cros_library.h" |
14 #include "chrome/browser/chromeos/options/network_config_view.h" | 15 #include "chrome/browser/chromeos/options/network_config_view.h" |
15 #include "chrome/browser/chromeos/status/status_area_host.h" | 16 #include "chrome/browser/chromeos/status/status_area_host.h" |
16 #include "gfx/canvas_skia.h" | 17 #include "gfx/canvas_skia.h" |
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
340 refreshing_menu_ = false; | 341 refreshing_menu_ = false; |
341 network_menu_.RunMenuAt(pt, views::Menu2::ALIGN_TOPRIGHT); | 342 network_menu_.RunMenuAt(pt, views::Menu2::ALIGN_TOPRIGHT); |
342 } | 343 } |
343 | 344 |
344 void NetworkMenuButton::InitMenuItems() { | 345 void NetworkMenuButton::InitMenuItems() { |
345 menu_items_.clear(); | 346 menu_items_.clear(); |
346 // Populate our MenuItems with the current list of wifi networks. | 347 // Populate our MenuItems with the current list of wifi networks. |
347 NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); | 348 NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); |
348 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 349 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
349 | 350 |
350 // Ethernet | 351 // Ethernet (if enabled, which means it's available)) |
351 string16 label = l10n_util::GetStringUTF16( | 352 if (cros->ethernet_enabled()) { |
352 IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET); | 353 string16 label = l10n_util::GetStringUTF16( |
353 SkBitmap icon = *rb.GetBitmapNamed(IDR_STATUSBAR_WIRED_BLACK); | 354 IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET); |
354 SkBitmap badge = cros->ethernet_connecting() || cros->ethernet_connected() ? | 355 SkBitmap icon = *rb.GetBitmapNamed(IDR_STATUSBAR_WIRED_BLACK); |
355 SkBitmap() : *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_DISCONNECTED); | 356 SkBitmap badge = cros->ethernet_connecting() || cros->ethernet_connected() ? |
356 int flag = (cros->ethernet_connecting() || cros->ethernet_connected()) ? | 357 SkBitmap() : *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_DISCONNECTED); |
357 FLAG_ETHERNET | FLAG_ASSOCIATED : FLAG_ETHERNET; | 358 int flag = (cros->ethernet_connecting() || cros->ethernet_connected()) ? |
358 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 359 FLAG_ETHERNET | FLAG_ASSOCIATED : FLAG_ETHERNET; |
359 IconForDisplay(icon, badge), std::string(), flag)); | 360 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
361 IconForDisplay(icon, badge), std::string(), flag)); | |
362 } | |
360 | 363 |
361 // Wifi | 364 // Wifi |
362 const WifiNetworkVector& wifi_networks = cros->wifi_networks(); | 365 const WifiNetworkVector& wifi_networks = cros->wifi_networks(); |
363 // Wifi networks ssids. | 366 // Wifi networks ssids. |
364 for (size_t i = 0; i < wifi_networks.size(); ++i) { | 367 for (size_t i = 0; i < wifi_networks.size(); ++i) { |
365 label = ASCIIToUTF16(wifi_networks[i].name()); | 368 string16 label = ASCIIToUTF16(wifi_networks[i].name()); |
366 SkBitmap icon = IconForNetworkStrength(wifi_networks[i].strength(), true); | 369 SkBitmap icon = IconForNetworkStrength(wifi_networks[i].strength(), true); |
367 SkBitmap badge = wifi_networks[i].encrypted() ? | 370 SkBitmap badge = wifi_networks[i].encrypted() ? |
368 *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_SECURE) : SkBitmap(); | 371 *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_SECURE) : SkBitmap(); |
369 flag = (wifi_networks[i].name() == cros->wifi_name()) ? | 372 int flag = (wifi_networks[i].name() == cros->wifi_name()) ? |
370 FLAG_WIFI | FLAG_ASSOCIATED : FLAG_WIFI; | 373 FLAG_WIFI | FLAG_ASSOCIATED : FLAG_WIFI; |
371 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 374 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
372 IconForDisplay(icon, badge), wifi_networks[i].service_path(), flag)); | 375 IconForDisplay(icon, badge), wifi_networks[i].service_path(), flag)); |
373 } | 376 } |
374 | 377 |
375 // Cellular | 378 // Cellular |
376 const CellularNetworkVector& cell_networks = cros->cellular_networks(); | 379 const CellularNetworkVector& cell_networks = cros->cellular_networks(); |
377 // Cellular networks ssids. | 380 // Cellular networks ssids. |
378 for (size_t i = 0; i < cell_networks.size(); ++i) { | 381 for (size_t i = 0; i < cell_networks.size(); ++i) { |
379 label = ASCIIToUTF16(cell_networks[i].name()); | 382 string16 label = ASCIIToUTF16(cell_networks[i].name()); |
380 SkBitmap icon = IconForNetworkStrength(cell_networks[i].strength(), true); | 383 SkBitmap icon = IconForNetworkStrength(cell_networks[i].strength(), true); |
381 // TODO(chocobo): Check cellular network 3g/edge. | 384 // TODO(chocobo): Check cellular network 3g/edge. |
382 SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_3G); | 385 SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_3G); |
383 // SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_EDGE); | 386 // SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_EDGE); |
384 flag = (cell_networks[i].name() == cros->cellular_name()) ? | 387 int flag = (cell_networks[i].name() == cros->cellular_name()) ? |
385 FLAG_CELLULAR | FLAG_ASSOCIATED : FLAG_CELLULAR; | 388 FLAG_CELLULAR | FLAG_ASSOCIATED : FLAG_CELLULAR; |
386 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 389 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
387 IconForDisplay(icon, badge), cell_networks[i].service_path(), flag)); | 390 IconForDisplay(icon, badge), cell_networks[i].service_path(), flag)); |
388 } | 391 } |
389 | 392 |
390 // No networks available message. | 393 // No networks available message. |
391 if (wifi_networks.empty() && cell_networks.empty()) { | 394 if (wifi_networks.empty() && cell_networks.empty()) { |
392 label = l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_MENU_ITEM_INDENT, | 395 string16 label = l10n_util::GetStringFUTF16( |
393 l10n_util::GetStringUTF16(IDS_STATUSBAR_NO_NETWORKS_MESSAGE)); | 396 IDS_STATUSBAR_NETWORK_MENU_ITEM_INDENT, |
397 l10n_util::GetStringUTF16(IDS_STATUSBAR_NO_NETWORKS_MESSAGE)); | |
394 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 398 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
395 SkBitmap(), std::string(), FLAG_DISABLED)); | 399 SkBitmap(), std::string(), FLAG_DISABLED)); |
396 } | 400 } |
397 | 401 |
398 // Other networks | 402 // Add "Other..." if wifi is enabled. |
399 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, | 403 if (cros->wifi_enabled()) { |
400 l10n_util::GetStringUTF16(IDS_OPTIONS_SETTINGS_OTHER_NETWORKS), | 404 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, |
401 IconForDisplay(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0), | 405 l10n_util::GetStringUTF16(IDS_OPTIONS_SETTINGS_OTHER_NETWORKS), |
402 SkBitmap()), | 406 IconForDisplay(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0), |
403 std::string(), FLAG_OTHER_NETWORK)); | 407 SkBitmap()), |
408 std::string(), FLAG_OTHER_NETWORK)); | |
409 } | |
404 | 410 |
405 if (cros->wifi_available() || cros->cellular_available()) { | 411 if (cros->wifi_available() || cros->cellular_available()) { |
406 // Separator. | 412 // Separator. |
407 menu_items_.push_back(MenuItem()); | 413 menu_items_.push_back(MenuItem()); |
408 | 414 |
409 // Turn Wifi Off. (only if wifi available) | 415 // Turn Wifi Off. (only if wifi available) |
410 if (cros->wifi_available()) { | 416 if (cros->wifi_available()) { |
411 int id = cros->wifi_enabled() ? IDS_STATUSBAR_NETWORK_DEVICE_DISABLE : | 417 int id = cros->wifi_enabled() ? IDS_STATUSBAR_NETWORK_DEVICE_DISABLE : |
412 IDS_STATUSBAR_NETWORK_DEVICE_ENABLE; | 418 IDS_STATUSBAR_NETWORK_DEVICE_ENABLE; |
413 label = l10n_util::GetStringFUTF16(id, | 419 string16 label = l10n_util::GetStringFUTF16(id, |
414 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_WIFI)); | 420 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_WIFI)); |
415 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 421 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
416 SkBitmap(), std::string(), FLAG_TOGGLE_WIFI)); | 422 SkBitmap(), std::string(), FLAG_TOGGLE_WIFI)); |
417 } | 423 } |
418 | 424 |
419 // Turn Cellular Off. (only if cellular available) | 425 // Turn Cellular Off. (only if cellular available) |
420 if (cros->cellular_available()) { | 426 if (cros->cellular_available()) { |
421 int id = cros->cellular_enabled() ? IDS_STATUSBAR_NETWORK_DEVICE_DISABLE : | 427 int id = cros->cellular_enabled() ? IDS_STATUSBAR_NETWORK_DEVICE_DISABLE : |
422 IDS_STATUSBAR_NETWORK_DEVICE_ENABLE; | 428 IDS_STATUSBAR_NETWORK_DEVICE_ENABLE; |
423 label = l10n_util::GetStringFUTF16(id, | 429 string16 label = l10n_util::GetStringFUTF16(id, |
424 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_CELLULAR)); | 430 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_CELLULAR)); |
425 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 431 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
426 SkBitmap(), std::string(), FLAG_TOGGLE_CELLULAR)); | 432 SkBitmap(), std::string(), FLAG_TOGGLE_CELLULAR)); |
427 } | 433 } |
428 } | 434 } |
429 | 435 |
430 // TODO(chocobo): Uncomment once we figure out how to do offline mode. | 436 // TODO(chocobo): Uncomment once we figure out how to do offline mode. |
431 // Offline mode. | 437 // Offline mode. |
432 // menu_items_.push_back(MenuItem(cros->offline_mode() ? | 438 // menu_items_.push_back(MenuItem(cros->offline_mode() ? |
433 // menus::MenuModel::TYPE_CHECK : menus::MenuModel::TYPE_COMMAND, | 439 // menus::MenuModel::TYPE_CHECK : menus::MenuModel::TYPE_COMMAND, |
434 // l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_OFFLINE_MODE), | 440 // l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_OFFLINE_MODE), |
435 // SkBitmap(), std::string(), FLAG_TOGGLE_OFFLINE)); | 441 // SkBitmap(), std::string(), FLAG_TOGGLE_OFFLINE)); |
436 | 442 |
437 if (cros->Connected() || host_->ShouldOpenButtonOptions(this)) { | 443 if (cros->Connected() || host_->ShouldOpenButtonOptions(this)) { |
438 // Separator. | 444 // Separator. |
439 menu_items_.push_back(MenuItem()); | 445 menu_items_.push_back(MenuItem()); |
440 | 446 |
441 // IP address | 447 // IP address |
442 if (cros->Connected()) { | 448 if (cros->Connected()) { |
443 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, | 449 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, |
444 ASCIIToUTF16(cros->IPAddress()), SkBitmap(), | 450 ASCIIToUTF16(cros->IPAddress()), SkBitmap(), |
445 std::string(), FLAG_DISABLED)); | 451 std::string(), FLAG_DISABLED)); |
446 } | 452 } |
447 | 453 |
448 // Network settings. | 454 // Network settings. |
449 if (host_->ShouldOpenButtonOptions(this)) { | 455 if (host_->ShouldOpenButtonOptions(this)) { |
450 label = | 456 string16 label = |
451 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_OPEN_OPTIONS_DIALOG); | 457 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_OPEN_OPTIONS_DIALOG); |
452 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 458 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
453 SkBitmap(), std::string(), FLAG_OPTIONS)); | 459 SkBitmap(), std::string(), FLAG_OPTIONS)); |
454 } | 460 } |
455 } | 461 } |
456 } | 462 } |
457 | 463 |
458 } // namespace chromeos | 464 } // namespace chromeos |
OLD | NEW |