summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/status
diff options
context:
space:
mode:
authorchocobo@chromium.org <chocobo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-19 23:48:02 +0000
committerchocobo@chromium.org <chocobo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-19 23:48:02 +0000
commit706e8fa0b6f0392c2fe206cb605f6b738a64cc6b (patch)
treee5587ac66e6a890e39c4a9d865638c50352424e8 /chrome/browser/chromeos/status
parentcdc491e034aa38aaace2fea31a4f412709c4d21d (diff)
downloadchromium_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.cc101
-rw-r--r--chrome/browser/chromeos/status/network_menu.h10
-rw-r--r--chrome/browser/chromeos/status/network_menu_button.cc33
-rw-r--r--chrome/browser/chromeos/status/network_menu_button.h1
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);