diff options
author | chocobo@chromium.org <chocobo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-19 23:48:02 +0000 |
---|---|---|
committer | chocobo@chromium.org <chocobo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-19 23:48:02 +0000 |
commit | 706e8fa0b6f0392c2fe206cb605f6b738a64cc6b (patch) | |
tree | e5587ac66e6a890e39c4a9d865638c50352424e8 /chrome/browser/chromeos/status | |
parent | cdc491e034aa38aaace2fea31a4f412709c4d21d (diff) | |
download | chromium_src-706e8fa0b6f0392c2fe206cb605f6b738a64cc6b.zip chromium_src-706e8fa0b6f0392c2fe206cb605f6b738a64cc6b.tar.gz chromium_src-706e8fa0b6f0392c2fe206cb605f6b738a64cc6b.tar.bz2 |
Update icons to show lowdata and very lowdata for 3G data.
BUG=chromium-os:5608
TEST=manual
Review URL: http://codereview.chromium.org/3748005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63135 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos/status')
-rw-r--r-- | chrome/browser/chromeos/status/network_menu.cc | 101 | ||||
-rw-r--r-- | chrome/browser/chromeos/status/network_menu.h | 10 | ||||
-rw-r--r-- | chrome/browser/chromeos/status/network_menu_button.cc | 33 | ||||
-rw-r--r-- | chrome/browser/chromeos/status/network_menu_button.h | 1 |
4 files changed, 112 insertions, 33 deletions
diff --git a/chrome/browser/chromeos/status/network_menu.cc b/chrome/browser/chromeos/status/network_menu.cc index d23e7ff..ad9caf2 100644 --- a/chrome/browser/chromeos/status/network_menu.cc +++ b/chrome/browser/chromeos/status/network_menu.cc @@ -45,6 +45,57 @@ namespace chromeos { // static const int NetworkMenu::kNumWifiImages = 9; +// NOTE: Use an array rather than just calculating a resource number to avoid +// creating implicit ordering dependencies on the resource values. +// static +const int NetworkMenu::kBarsImages[kNumWifiImages] = { + IDR_STATUSBAR_NETWORK_BARS1, + IDR_STATUSBAR_NETWORK_BARS2, + IDR_STATUSBAR_NETWORK_BARS3, + IDR_STATUSBAR_NETWORK_BARS4, + IDR_STATUSBAR_NETWORK_BARS5, + IDR_STATUSBAR_NETWORK_BARS6, + IDR_STATUSBAR_NETWORK_BARS7, + IDR_STATUSBAR_NETWORK_BARS8, + IDR_STATUSBAR_NETWORK_BARS9, +}; +// static +const int NetworkMenu::kBarsImagesBlack[kNumWifiImages] = { + IDR_STATUSBAR_NETWORK_BARS1_BLACK, + IDR_STATUSBAR_NETWORK_BARS2_BLACK, + IDR_STATUSBAR_NETWORK_BARS3_BLACK, + IDR_STATUSBAR_NETWORK_BARS4_BLACK, + IDR_STATUSBAR_NETWORK_BARS5_BLACK, + IDR_STATUSBAR_NETWORK_BARS6_BLACK, + IDR_STATUSBAR_NETWORK_BARS7_BLACK, + IDR_STATUSBAR_NETWORK_BARS8_BLACK, + IDR_STATUSBAR_NETWORK_BARS9_BLACK, +}; +// static +const int NetworkMenu::kBarsImagesLowData[kNumWifiImages] = { + IDR_STATUSBAR_NETWORK_BARS1_LOWDATA, + IDR_STATUSBAR_NETWORK_BARS2_LOWDATA, + IDR_STATUSBAR_NETWORK_BARS3_LOWDATA, + IDR_STATUSBAR_NETWORK_BARS4_LOWDATA, + IDR_STATUSBAR_NETWORK_BARS5_LOWDATA, + IDR_STATUSBAR_NETWORK_BARS6_LOWDATA, + IDR_STATUSBAR_NETWORK_BARS7_LOWDATA, + IDR_STATUSBAR_NETWORK_BARS8_LOWDATA, + IDR_STATUSBAR_NETWORK_BARS9_LOWDATA, +}; +// static +const int NetworkMenu::kBarsImagesVLowData[kNumWifiImages] = { + IDR_STATUSBAR_NETWORK_BARS1_VLOWDATA, + IDR_STATUSBAR_NETWORK_BARS2_VLOWDATA, + IDR_STATUSBAR_NETWORK_BARS3_VLOWDATA, + IDR_STATUSBAR_NETWORK_BARS4_VLOWDATA, + IDR_STATUSBAR_NETWORK_BARS5_VLOWDATA, + IDR_STATUSBAR_NETWORK_BARS6_VLOWDATA, + IDR_STATUSBAR_NETWORK_BARS7_VLOWDATA, + IDR_STATUSBAR_NETWORK_BARS8_VLOWDATA, + IDR_STATUSBAR_NETWORK_BARS9_VLOWDATA, +}; + NetworkMenu::NetworkMenu() : min_width_(-1) { network_menu_.reset(NetworkMenuUI::CreateMenu2(this)); @@ -320,36 +371,32 @@ void NetworkMenu::UpdateMenu() { // static SkBitmap NetworkMenu::IconForNetworkStrength(int strength, bool black) { // Compose wifi icon by superimposing various icons. - // NOTE: Use an array rather than just calculating a resource number to avoid - // creating implicit ordering dependencies on the resource values. - static const int kBarsImages[kNumWifiImages] = { - IDR_STATUSBAR_NETWORK_BARS1, - IDR_STATUSBAR_NETWORK_BARS2, - IDR_STATUSBAR_NETWORK_BARS3, - IDR_STATUSBAR_NETWORK_BARS4, - IDR_STATUSBAR_NETWORK_BARS5, - IDR_STATUSBAR_NETWORK_BARS6, - IDR_STATUSBAR_NETWORK_BARS7, - IDR_STATUSBAR_NETWORK_BARS8, - IDR_STATUSBAR_NETWORK_BARS9, - }; - static const int kBarsBlackImages[kNumWifiImages] = { - IDR_STATUSBAR_NETWORK_BARS1_BLACK, - IDR_STATUSBAR_NETWORK_BARS2_BLACK, - IDR_STATUSBAR_NETWORK_BARS3_BLACK, - IDR_STATUSBAR_NETWORK_BARS4_BLACK, - IDR_STATUSBAR_NETWORK_BARS5_BLACK, - IDR_STATUSBAR_NETWORK_BARS6_BLACK, - IDR_STATUSBAR_NETWORK_BARS7_BLACK, - IDR_STATUSBAR_NETWORK_BARS8_BLACK, - IDR_STATUSBAR_NETWORK_BARS9_BLACK, - }; - int index = static_cast<int>(strength / 100.0 * nextafter(static_cast<float>(kNumWifiImages), 0)); index = std::max(std::min(index, kNumWifiImages - 1), 0); - return *ResourceBundle::GetSharedInstance().GetBitmapNamed( - black ? kBarsBlackImages[index] : kBarsImages[index]); + const int* images = black ? kBarsImagesBlack : kBarsImages; + return *ResourceBundle::GetSharedInstance().GetBitmapNamed(images[index]); +} + +SkBitmap NetworkMenu::IconForNetworkStrength(CellularNetwork cellular) { + // Compose wifi icon by superimposing various icons. + int index = static_cast<int>(cellular.strength() / 100.0 * + nextafter(static_cast<float>(kNumWifiImages), 0)); + index = std::max(std::min(index, kNumWifiImages - 1), 0); + const int* images; + switch (cellular.data_left()) { + case CellularNetwork::DATA_NONE: + case CellularNetwork::DATA_VERY_LOW: + images = kBarsImagesVLowData; + break; + case CellularNetwork::DATA_LOW: + images = kBarsImagesLowData; + break; + case CellularNetwork::DATA_NORMAL: + images = kBarsImages; + break; + } + return *ResourceBundle::GetSharedInstance().GetBitmapNamed(images[index]); } // static diff --git a/chrome/browser/chromeos/status/network_menu.h b/chrome/browser/chromeos/status/network_menu.h index 8419cfe..3c8d322 100644 --- a/chrome/browser/chromeos/status/network_menu.h +++ b/chrome/browser/chromeos/status/network_menu.h @@ -114,6 +114,10 @@ class NetworkMenu : public views::ViewMenuDelegate, // on a light background or a white icon for display on a dark background. static SkBitmap IconForNetworkStrength(int strength, bool black); + // Returns the Icon for a network strength for CellularNetwork |cellular|. + // This returns different colored bars depending on cellular data left. + static SkBitmap IconForNetworkStrength(CellularNetwork cellular); + // This method will convert the |icon| bitmap to the correct size for display. // If the |badge| icon is not empty, it will draw that on top of the icon. static SkBitmap IconForDisplay(SkBitmap icon, SkBitmap badge); @@ -190,6 +194,12 @@ class NetworkMenu : public views::ViewMenuDelegate, // The number of wifi strength images. static const int kNumWifiImages; + // Bars image resources. + static const int kBarsImages[]; + static const int kBarsImagesBlack[]; + static const int kBarsImagesLowData[]; + static const int kBarsImagesVLowData[]; + // Our menu items. MenuItemVector menu_items_; diff --git a/chrome/browser/chromeos/status/network_menu_button.cc b/chrome/browser/chromeos/status/network_menu_button.cc index c16383e..3d43f18 100644 --- a/chrome/browser/chromeos/status/network_menu_button.cc +++ b/chrome/browser/chromeos/status/network_menu_button.cc @@ -120,11 +120,16 @@ void NetworkMenuButton::NetworkChanged(NetworkLibrary* cros) { IDS_STATUSBAR_NETWORK_CONNECTED_TOOLTIP, UTF8ToWide(cros->wifi_network().name()))); } else if (cros->cellular_connected()) { - SetIcon(IconForNetworkStrength( - cros->cellular_network().strength(), false)); + const CellularNetwork& cellular = cros->cellular_network(); + if (cellular.data_left() == CellularNetwork::DATA_NONE) { + // If no data, then we show 0 bars. + SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0)); + } else { + SetIcon(IconForNetworkStrength(cellular)); + } SetTooltipText(l10n_util::GetStringF( IDS_STATUSBAR_NETWORK_CONNECTED_TOOLTIP, - UTF8ToWide(cros->cellular_network().name()))); + UTF8ToWide(cellular.name()))); } else { SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0)); SetTooltipText(l10n_util::GetString( @@ -136,9 +141,20 @@ void NetworkMenuButton::NetworkChanged(NetworkLibrary* cros) { SetBadge(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_DISCONNECTED)); } else if (!cros->ethernet_connected() && !cros->wifi_connected() && (cros->cellular_connecting() || cros->cellular_connected())) { - // TODO(chocobo): Check cellular network 3g/edge. - SetBadge(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_3G)); -// SetBadge(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_EDGE)); + int id; + switch (cros->cellular_network().data_left()) { + case CellularNetwork::DATA_NONE: + case CellularNetwork::DATA_VERY_LOW: + id = IDR_STATUSBAR_NETWORK_3G_VLOWDATA; + break; + case CellularNetwork::DATA_LOW: + id = IDR_STATUSBAR_NETWORK_3G_LOWDATA; + break; + case CellularNetwork::DATA_NORMAL: + id = IDR_STATUSBAR_NETWORK_3G; + break; + } + SetBadge(*rb.GetBitmapNamed(id)); } else { SetBadge(SkBitmap()); } @@ -153,6 +169,11 @@ void NetworkMenuButton::NetworkChanged(NetworkLibrary* cros) { UpdateMenu(); } +void NetworkMenuButton::CellularDataPlanChanged(NetworkLibrary* cros) { + // Call NetworkChanged which will update the icon. + NetworkChanged(cros); +} + void NetworkMenuButton::SetBadge(const SkBitmap& badge) { badge_ = badge; } diff --git a/chrome/browser/chromeos/status/network_menu_button.h b/chrome/browser/chromeos/status/network_menu_button.h index bb5ff96..79c5cdb 100644 --- a/chrome/browser/chromeos/status/network_menu_button.h +++ b/chrome/browser/chromeos/status/network_menu_button.h @@ -56,6 +56,7 @@ class NetworkMenuButton : public StatusAreaButton, // NetworkLibrary::Observer implementation. virtual void NetworkChanged(NetworkLibrary* obj); + virtual void CellularDataPlanChanged(NetworkLibrary* obj); // Sets the badge icon. void SetBadge(const SkBitmap& badge); |