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

Side by Side Diff: ui/chromeos/network/network_icon.cc

Issue 2338103002: CrOS MD - use vectorized icons for ethernet and VPN. (Closed)
Patch Set: rename Wifi to Mobile Created 4 years, 3 months 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
« no previous file with comments | « ui/chromeos/network/network_icon.h ('k') | ui/gfx/vector_icons/BUILD.gn » ('j') | 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ui/chromeos/network/network_icon.h" 5 #include "ui/chromeos/network/network_icon.h"
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "chromeos/network/device_state.h" 9 #include "chromeos/network/device_state.h"
10 #include "chromeos/network/network_connection_handler.h" 10 #include "chromeos/network/network_connection_handler.h"
(...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after
479 479
480 if (index < 0 || index >= kNumNetworkImages) 480 if (index < 0 || index >= kNumNetworkImages)
481 return gfx::ImageSkia(); 481 return gfx::ImageSkia();
482 gfx::ImageSkia* images = BaseImageForType(image_type, icon_type); 482 gfx::ImageSkia* images = BaseImageForType(image_type, icon_type);
483 int width = images->width(); 483 int width = images->width();
484 int height = images->height() / kNumNetworkImages; 484 int height = images->height() / kNumNetworkImages;
485 return gfx::ImageSkiaOperations::ExtractSubset(*images, 485 return gfx::ImageSkiaOperations::ExtractSubset(*images,
486 gfx::Rect(0, index * height, width, height)); 486 gfx::Rect(0, index * height, width, height));
487 } 487 }
488 488
489 gfx::ImageSkia GetConnectedImage(IconType icon_type,
490 const std::string& network_type) {
491 if (network_type == shill::kTypeVPN) {
492 return *ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
493 IDR_AURA_UBER_TRAY_NETWORK_VPN);
494 }
495 ImageType image_type = ImageTypeForNetworkType(network_type);
496 const int connected_index = kNumNetworkImages - 1;
497 return GetImageForIndex(image_type, icon_type, connected_index);
498 }
499
500 const gfx::ImageSkia GetDisconnectedImage(IconType icon_type, 489 const gfx::ImageSkia GetDisconnectedImage(IconType icon_type,
501 const std::string& network_type) { 490 const std::string& network_type) {
502 if (network_type == shill::kTypeVPN) { 491 DCHECK_NE(shill::kTypeVPN, network_type);
503 // Note: same as connected image, shouldn't normally be seen.
504 return *ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
505 IDR_AURA_UBER_TRAY_NETWORK_VPN);
506 }
507 ImageType image_type = ImageTypeForNetworkType(network_type); 492 ImageType image_type = ImageTypeForNetworkType(network_type);
508 const int disconnected_index = 0; 493 const int disconnected_index = 0;
509 return GetImageForIndex(image_type, icon_type, disconnected_index); 494 return GetImageForIndex(image_type, icon_type, disconnected_index);
510 } 495 }
511 496
512 gfx::ImageSkia* ConnectingWirelessImage(ImageType image_type, 497 gfx::ImageSkia* ConnectingWirelessImage(ImageType image_type,
513 IconType icon_type, 498 IconType icon_type,
514 double animation) { 499 double animation) {
515 static const int kImageCount = kNumNetworkImages - 1; 500 static const int kImageCount = kNumNetworkImages - 1;
516 static gfx::ImageSkia* s_bars_images_dark[kImageCount]; 501 static gfx::ImageSkia* s_bars_images_dark[kImageCount];
(...skipping 25 matching lines...) Expand all
542 if (!s_vpn_images[index]) { 527 if (!s_vpn_images[index]) {
543 // Lazily cache images. 528 // Lazily cache images.
544 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); 529 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
545 gfx::ImageSkia* icon = rb.GetImageSkiaNamed(IDR_AURA_UBER_TRAY_NETWORK_VPN); 530 gfx::ImageSkia* icon = rb.GetImageSkiaNamed(IDR_AURA_UBER_TRAY_NETWORK_VPN);
546 s_vpn_images[index] = new gfx::ImageSkia( 531 s_vpn_images[index] = new gfx::ImageSkia(
547 gfx::ImageSkiaOperations::CreateTransparentImage(*icon, animation)); 532 gfx::ImageSkiaOperations::CreateTransparentImage(*icon, animation));
548 } 533 }
549 return *s_vpn_images[index]; 534 return *s_vpn_images[index];
550 } 535 }
551 536
552 gfx::ImageSkia ConnectingVpnBadge(double animation) { 537 gfx::ImageSkia ConnectingVpnBadge(double animation, IconType icon_type) {
553 int index = animation * nextafter(static_cast<float>(kNumFadeImages), 0); 538 int index = animation * nextafter(static_cast<float>(kNumFadeImages), 0);
554 static gfx::ImageSkia* s_vpn_badges[kNumFadeImages]; 539 static gfx::ImageSkia* s_vpn_badges[kNumFadeImages];
555 if (!s_vpn_badges[index]) { 540 if (!s_vpn_badges[index]) {
556 // Lazily cache images. 541 // Lazily cache images.
557 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); 542 gfx::ImageSkia badge =
558 gfx::ImageSkia* badge = 543 UseMd() ? gfx::CreateVectorIcon(gfx::VectorIconId::NETWORK_BADGE_VPN,
559 rb.GetImageSkiaNamed(IDR_AURA_UBER_TRAY_NETWORK_VPN_BADGE); 544 GetBaseColorForIconType(icon_type))
545 : *ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
546 IDR_AURA_UBER_TRAY_NETWORK_VPN_BADGE);
560 s_vpn_badges[index] = new gfx::ImageSkia( 547 s_vpn_badges[index] = new gfx::ImageSkia(
561 gfx::ImageSkiaOperations::CreateTransparentImage(*badge, animation)); 548 gfx::ImageSkiaOperations::CreateTransparentImage(badge, animation));
562 } 549 }
563 return *s_vpn_badges[index]; 550 return *s_vpn_badges[index];
564 } 551 }
565 552
566 int StrengthIndex(int strength) { 553 int StrengthIndex(int strength) {
567 // Return an index in the range [1, kNumNetworkImages - 1]. 554 // Return an index in the range [1, kNumNetworkImages - 1].
568 const float findex = (static_cast<float>(strength) / 100.0f) * 555 const float findex = (static_cast<float>(strength) / 100.0f) *
569 nextafter(static_cast<float>(kNumNetworkImages - 1), 0); 556 nextafter(static_cast<float>(kNumNetworkImages - 1), 0);
570 int index = 1 + static_cast<int>(findex); 557 int index = 1 + static_cast<int>(findex);
571 index = std::max(std::min(index, kNumNetworkImages - 1), 1); 558 index = std::max(std::min(index, kNumNetworkImages - 1), 1);
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 return gfx::ImageSkia(); 624 return gfx::ImageSkia();
638 } 625 }
639 return *ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(id); 626 return *ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(id);
640 } 627 }
641 628
642 gfx::ImageSkia GetIcon(const NetworkState* network, 629 gfx::ImageSkia GetIcon(const NetworkState* network,
643 IconType icon_type, 630 IconType icon_type,
644 int strength_index) { 631 int strength_index) {
645 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); 632 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
646 if (network->Matches(NetworkTypePattern::Ethernet())) { 633 if (network->Matches(NetworkTypePattern::Ethernet())) {
647 return *rb.GetImageSkiaNamed(IDR_AURA_UBER_TRAY_NETWORK_WIRED); 634 DCHECK_NE(ICON_TYPE_TRAY, icon_type);
635 return UseMd()
636 ? gfx::CreateVectorIcon(gfx::VectorIconId::NETWORK_ETHERNET,
637 GetBaseColorForIconType(ICON_TYPE_LIST))
638 : *rb.GetImageSkiaNamed(IDR_AURA_UBER_TRAY_NETWORK_WIRED);
648 } else if (network->Matches(NetworkTypePattern::Wireless())) { 639 } else if (network->Matches(NetworkTypePattern::Wireless())) {
649 DCHECK(strength_index > 0); 640 DCHECK(strength_index > 0);
650 return GetImageForIndex(ImageTypeForNetworkType(network->type()), icon_type, 641 return GetImageForIndex(ImageTypeForNetworkType(network->type()), icon_type,
651 strength_index); 642 strength_index);
652 } else if (network->Matches(NetworkTypePattern::VPN())) { 643 } else if (network->Matches(NetworkTypePattern::VPN())) {
653 return *rb.GetImageSkiaNamed(IDR_AURA_UBER_TRAY_NETWORK_VPN); 644 DCHECK_NE(ICON_TYPE_TRAY, icon_type);
654 } else { 645 return GetVpnImage();
655 LOG(WARNING) << "Request for icon for unsupported type: "
656 << network->type();
657 return *rb.GetImageSkiaNamed(IDR_AURA_UBER_TRAY_NETWORK_WIRED);
658 } 646 }
647
648 NOTREACHED() << "Request for icon for unsupported type: " << network->type();
649 return gfx::ImageSkia();
659 } 650 }
660 651
661 //------------------------------------------------------------------------------ 652 //------------------------------------------------------------------------------
662 // Get connecting images 653 // Get connecting images
663 654
664 gfx::ImageSkia GetConnectingVpnImage(IconType icon_type) { 655 gfx::ImageSkia GetConnectingVpnImage(IconType icon_type) {
665 NetworkStateHandler* handler = NetworkHandler::Get()->network_state_handler(); 656 NetworkStateHandler* handler = NetworkHandler::Get()->network_state_handler();
666 const NetworkState* connected_network = nullptr; 657 const NetworkState* connected_network = nullptr;
667 if (icon_type == ICON_TYPE_TRAY) { 658 if (icon_type == ICON_TYPE_TRAY) {
668 connected_network = 659 connected_network =
669 handler->ConnectedNetworkByType(NetworkTypePattern::NonVirtual()); 660 handler->ConnectedNetworkByType(NetworkTypePattern::NonVirtual());
670 } 661 }
671 double animation = NetworkIconAnimation::GetInstance()->GetAnimation(); 662 double animation = NetworkIconAnimation::GetInstance()->GetAnimation();
672 663
673 gfx::ImageSkia icon; 664 gfx::ImageSkia icon;
674 Badges badges; 665 Badges badges;
675 if (connected_network) { 666 if (connected_network) {
676 icon = GetImageForNetwork(connected_network, icon_type); 667 icon = GetImageForNetwork(connected_network, icon_type);
677 badges.bottom_left = ConnectingVpnBadge(animation); 668 badges.bottom_left = ConnectingVpnBadge(animation, icon_type);
678 } else { 669 } else {
679 icon = ConnectingVpnImage(animation); 670 icon = ConnectingVpnImage(animation);
680 } 671 }
681 return UseMd() ? NetworkIconImageSourceMd::CreateImage(icon, badges) 672 return UseMd() ? NetworkIconImageSourceMd::CreateImage(icon, badges)
682 : gfx::ImageSkia(new NetworkIconImageSource(icon, badges), 673 : gfx::ImageSkia(new NetworkIconImageSource(icon, badges),
683 icon.size()); 674 icon.size());
684 } 675 }
685 676
686 gfx::ImageSkia GetConnectingImage(IconType icon_type, 677 gfx::ImageSkia GetConnectingImage(IconType icon_type,
687 const std::string& network_type) { 678 const std::string& network_type) {
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
902 if (!network->visible()) 893 if (!network->visible())
903 return GetDisconnectedImage(icon_type, network->type()); 894 return GetDisconnectedImage(icon_type, network->type());
904 895
905 if (network->IsConnectingState()) 896 if (network->IsConnectingState())
906 return GetConnectingImage(icon_type, network->type()); 897 return GetConnectingImage(icon_type, network->type());
907 898
908 NetworkIconImpl* icon = FindAndUpdateImageImpl(network, icon_type); 899 NetworkIconImpl* icon = FindAndUpdateImageImpl(network, icon_type);
909 return icon->image(); 900 return icon->image();
910 } 901 }
911 902
912 gfx::ImageSkia GetImageForConnectedNetwork(IconType icon_type, 903 gfx::ImageSkia GetImageForConnectedMobileNetwork() {
913 const std::string& network_type) { 904 ImageType image_type = ImageTypeForNetworkType(shill::kTypeWifi);
914 return GetConnectedImage(icon_type, network_type); 905 const IconType icon_type = ICON_TYPE_LIST;
906 const int connected_index = kNumNetworkImages - 1;
907 return GetImageForIndex(image_type, icon_type, connected_index);
915 } 908 }
916 909
917 gfx::ImageSkia GetImageForConnectingNetwork(IconType icon_type, 910 gfx::ImageSkia GetImageForDisconnectedCellNetwork() {
918 const std::string& network_type) { 911 return GetDisconnectedImage(ICON_TYPE_LIST, shill::kTypeCellular);
919 return GetConnectingImage(icon_type, network_type);
920 } 912 }
921 913
922 gfx::ImageSkia GetImageForDisconnectedNetwork(IconType icon_type, 914 gfx::ImageSkia GetVpnImage() {
923 const std::string& network_type) { 915 return UseMd()
924 return GetDisconnectedImage(icon_type, network_type); 916 ? gfx::CreateVectorIcon(gfx::VectorIconId::NETWORK_VPN,
917 GetBaseColorForIconType(ICON_TYPE_LIST))
918 : *ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
919 IDR_AURA_UBER_TRAY_NETWORK_VPN);
925 } 920 }
926 921
927 base::string16 GetLabelForNetwork(const chromeos::NetworkState* network, 922 base::string16 GetLabelForNetwork(const chromeos::NetworkState* network,
928 IconType icon_type) { 923 IconType icon_type) {
929 DCHECK(network); 924 DCHECK(network);
930 std::string activation_state = network->activation_state(); 925 std::string activation_state = network->activation_state();
931 if (icon_type == ICON_TYPE_LIST) { 926 if (icon_type == ICON_TYPE_LIST) {
932 // Show "<network>: [Connecting|Activating|Reconnecting]..." 927 // Show "<network>: [Connecting|Activating|Reconnecting]..."
933 if (network->IsReconnecting()) { 928 if (network->IsReconnecting()) {
934 return l10n_util::GetStringFUTF16( 929 return l10n_util::GetStringFUTF16(
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
1050 state_handler->FirstNetworkByType(NetworkTypePattern::Mobile()); 1045 state_handler->FirstNetworkByType(NetworkTypePattern::Mobile());
1051 if (mobile_network && (mobile_network->activation_state() == 1046 if (mobile_network && (mobile_network->activation_state() ==
1052 shill::kActivationStateActivating)) { 1047 shill::kActivationStateActivating)) {
1053 network = mobile_network; 1048 network = mobile_network;
1054 } 1049 }
1055 } 1050 }
1056 if (!network) { 1051 if (!network) {
1057 // If no connecting network, check for cellular initializing. 1052 // If no connecting network, check for cellular initializing.
1058 int uninitialized_msg = GetCellularUninitializedMsg(); 1053 int uninitialized_msg = GetCellularUninitializedMsg();
1059 if (uninitialized_msg != 0) { 1054 if (uninitialized_msg != 0) {
1060 *image = GetImageForConnectingNetwork(icon_type, shill::kTypeCellular); 1055 *image = GetConnectingImage(icon_type, shill::kTypeCellular);
1061 if (label) 1056 if (label)
1062 *label = l10n_util::GetStringUTF16(uninitialized_msg); 1057 *label = l10n_util::GetStringUTF16(uninitialized_msg);
1063 *animating = true; 1058 *animating = true;
1064 } else { 1059 } else {
1065 // Otherwise show the disconnected wifi icon. 1060 // Otherwise show the disconnected wifi icon.
1066 *image = GetImageForDisconnectedNetwork(icon_type, shill::kTypeWifi); 1061 *image = GetDisconnectedImage(icon_type, shill::kTypeWifi);
1067 if (label) { 1062 if (label) {
1068 *label = l10n_util::GetStringUTF16( 1063 *label = l10n_util::GetStringUTF16(
1069 IDS_ASH_STATUS_TRAY_NETWORK_NOT_CONNECTED); 1064 IDS_ASH_STATUS_TRAY_NETWORK_NOT_CONNECTED);
1070 } 1065 }
1071 *animating = false; 1066 *animating = false;
1072 } 1067 }
1073 return; 1068 return;
1074 } 1069 }
1075 *animating = network->IsConnectingState(); 1070 *animating = network->IsConnectingState();
1076 // Get icon and label for connected or connecting network. 1071 // Get icon and label for connected or connecting network.
(...skipping 11 matching lines...) Expand all
1088 iter != networks.end(); ++iter) { 1083 iter != networks.end(); ++iter) {
1089 network_paths.insert((*iter)->path()); 1084 network_paths.insert((*iter)->path());
1090 } 1085 }
1091 PurgeIconMap(ICON_TYPE_TRAY, network_paths); 1086 PurgeIconMap(ICON_TYPE_TRAY, network_paths);
1092 PurgeIconMap(ICON_TYPE_DEFAULT_VIEW, network_paths); 1087 PurgeIconMap(ICON_TYPE_DEFAULT_VIEW, network_paths);
1093 PurgeIconMap(ICON_TYPE_LIST, network_paths); 1088 PurgeIconMap(ICON_TYPE_LIST, network_paths);
1094 } 1089 }
1095 1090
1096 } // namespace network_icon 1091 } // namespace network_icon
1097 } // namespace ui 1092 } // namespace ui
OLDNEW
« no previous file with comments | « ui/chromeos/network/network_icon.h ('k') | ui/gfx/vector_icons/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698