diff options
Diffstat (limited to 'chrome/browser/chromeos/status/network_menu.cc')
-rw-r--r-- | chrome/browser/chromeos/status/network_menu.cc | 51 |
1 files changed, 46 insertions, 5 deletions
diff --git a/chrome/browser/chromeos/status/network_menu.cc b/chrome/browser/chromeos/status/network_menu.cc index 70107ab..6badf44 100644 --- a/chrome/browser/chromeos/status/network_menu.cc +++ b/chrome/browser/chromeos/status/network_menu.cc @@ -4,6 +4,8 @@ #include "chrome/browser/chromeos/status/network_menu.h" +#include <algorithm> + #include "app/l10n_util.h" #include "app/resource_bundle.h" #include "base/command_line.h" @@ -390,6 +392,47 @@ SkBitmap NetworkMenu::IconForNetworkStrength(const CellularNetwork* cellular) { } // static +// TODO(ers) update for GSM when we have the necessary images +SkBitmap NetworkMenu::BadgeForNetworkTechnology( + const CellularNetwork* cellular) { + + int id = -1; + if (cellular->network_technology() == NETWORK_TECHNOLOGY_EVDO) { + switch (cellular->data_left()) { + case CellularNetwork::DATA_NONE: + case CellularNetwork::DATA_VERY_LOW: + id = IDR_STATUSBAR_NETWORK_3G_ERROR; + break; + case CellularNetwork::DATA_LOW: + id = IDR_STATUSBAR_NETWORK_3G_WARN; + break; + case CellularNetwork::DATA_NORMAL: + id = IDR_STATUSBAR_NETWORK_3G; + break; + } + } else if (cellular->network_technology() == NETWORK_TECHNOLOGY_1XRTT) { + switch (cellular->data_left()) { + case CellularNetwork::DATA_NONE: + case CellularNetwork::DATA_VERY_LOW: + id = IDR_STATUSBAR_NETWORK_1X_ERROR; + break; + case CellularNetwork::DATA_LOW: + id = IDR_STATUSBAR_NETWORK_1X_WARN; + break; + case CellularNetwork::DATA_NORMAL: + id = IDR_STATUSBAR_NETWORK_1X; + break; + } + } else { + id = -1; + } + if (id == -1) + return SkBitmap(); + else + return *ResourceBundle::GetSharedInstance().GetBitmapNamed(id); +} + +// static SkBitmap NetworkMenu::IconForDisplay(SkBitmap icon, SkBitmap badge) { // Draw badge at (14,14). static const int kBadgeX = 14; @@ -530,9 +573,7 @@ void NetworkMenu::InitMenuItems() { } SkBitmap icon = IconForNetworkStrength(cell_networks[i]->strength(), true); - // TODO(chocobo): Check cellular network 3g/edge. - SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_3G); - // SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_EDGE); + SkBitmap badge = BadgeForNetworkTechnology(cell_networks[i]); int flag = FLAG_CELLULAR; if (active_cellular && cell_networks[i]->service_path() == @@ -642,7 +683,7 @@ void NetworkMenu::ShowNetworkConfigView(NetworkConfigView* view, view->SetLoginTextfieldFocus(); } -void NetworkMenu::ShowWifi(const WifiNetwork* wifi, bool focus_login) const{ +void NetworkMenu::ShowWifi(const WifiNetwork* wifi, bool focus_login) const { DCHECK(wifi); if (use_settings_ui_ && (MenuUI::IsEnabled() || wifi->connected() || wifi->connecting())) { @@ -667,7 +708,7 @@ void NetworkMenu::ShowCellular(const CellularNetwork* cellular, void NetworkMenu::ActivateCellular(const CellularNetwork* cellular) const { DCHECK(cellular); Browser* browser = BrowserList::GetLastActive(); - // TODO?(stevenjb) : specify which service to activate. + // TODO(stevenjb) : specify which service to activate. browser->ShowSingletonTab(GURL(chrome::kChromeUIMobileSetupURL)); } |