diff options
author | chocobo@chromium.org <chocobo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-23 01:40:59 +0000 |
---|---|---|
committer | chocobo@chromium.org <chocobo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-23 01:40:59 +0000 |
commit | 3f4e81fcb0fb45e18ff0c7c7f526a3ad6a01e4eb (patch) | |
tree | 0902edcd62824a2ed30e31dd9a8bac5a4de1f32c /chrome/browser | |
parent | 4aaf0e4df4d31e7862262f334a854c00b4ee4b3f (diff) | |
download | chromium_src-3f4e81fcb0fb45e18ff0c7c7f526a3ad6a01e4eb.zip chromium_src-3f4e81fcb0fb45e18ff0c7c7f526a3ad6a01e4eb.tar.gz chromium_src-3f4e81fcb0fb45e18ff0c7c7f526a3ad6a01e4eb.tar.bz2 |
Fix wifi/cellular icon and badge for all variations of connected state.
Also fix bug with old cellular dialog showing up after suspend/resume.
BUG=chromium-os:7067,chromium-os:9505
TEST=make sure icon and badge is correct. especially make sure if 3g is connecting, we show a 3g badge. and if 3g is connected and wifi is connecting, we do not show the 3g badge.
Review URL: http://codereview.chromium.org/5254001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@67042 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r-- | chrome/browser/chromeos/status/network_menu.cc | 75 | ||||
-rw-r--r-- | chrome/browser/chromeos/status/network_menu_button.cc | 166 | ||||
-rw-r--r-- | chrome/browser/chromeos/status/network_menu_button.h | 3 |
3 files changed, 110 insertions, 134 deletions
diff --git a/chrome/browser/chromeos/status/network_menu.cc b/chrome/browser/chromeos/status/network_menu.cc index c32854a..72f3cf3 100644 --- a/chrome/browser/chromeos/status/network_menu.cc +++ b/chrome/browser/chromeos/status/network_menu.cc @@ -211,8 +211,7 @@ bool NetworkMenu::ConnectToNetworkAt(int index, // Connect or reconnect. if (auto_connect >= 0) wifi->set_auto_connect(auto_connect ? true : false); - if (cros->wifi_network() && - wifi->service_path() == cros->wifi_network()->service_path()) { + if (wifi->connecting() || wifi->connected()) { // Show the config settings for the active network. ShowWifi(wifi, false); return true; @@ -264,18 +263,14 @@ bool NetworkMenu::ConnectToNetworkAt(int index, cellular->needs_new_plan()) { ActivateCellular(cellular); return true; - } else if (cros->cellular_network() && - (cellular->service_path() == - cros->cellular_network()->service_path())) { - // Show the config settings for the cellular network. + } else if (cellular->connecting() || cellular->connected()) { + // Cellular network is connecting or connected, + // so we show the config settings for the cellular network. ShowCellular(cellular, false); return true; - } else { - bool connected = cros->ConnectToCellularNetwork(cellular); - if (!connected) { - ShowCellular(cellular, true); - } } + // Clicked on a disconnected cellular network, so connect to it. + cros->ConnectToCellularNetwork(cellular); } else { // If we are attempting to connect to a network that no longer exists, // display a notification. @@ -433,35 +428,37 @@ SkBitmap NetworkMenu::IconForNetworkConnecting(double animation_value, // 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->GetDataLeft()) { - case CellularNetwork::DATA_NONE: - id = IDR_STATUSBAR_NETWORK_3G_ERROR; - break; - case CellularNetwork::DATA_VERY_LOW: - case CellularNetwork::DATA_LOW: - case CellularNetwork::DATA_NORMAL: - id = IDR_STATUSBAR_NETWORK_3G; - break; - } - } else if (cellular->network_technology() == NETWORK_TECHNOLOGY_1XRTT) { - switch (cellular->GetDataLeft()) { - case CellularNetwork::DATA_NONE: - id = IDR_STATUSBAR_NETWORK_1X_ERROR; - break; - case CellularNetwork::DATA_VERY_LOW: - case CellularNetwork::DATA_LOW: - case CellularNetwork::DATA_NORMAL: - id = IDR_STATUSBAR_NETWORK_1X; - break; - } + if (!cellular) + return SkBitmap(); + + int id = -1; + if (cellular->network_technology() == NETWORK_TECHNOLOGY_EVDO) { + switch (cellular->GetDataLeft()) { + case CellularNetwork::DATA_NONE: + id = IDR_STATUSBAR_NETWORK_3G_ERROR; + break; + case CellularNetwork::DATA_VERY_LOW: + case CellularNetwork::DATA_LOW: + case CellularNetwork::DATA_NORMAL: + id = IDR_STATUSBAR_NETWORK_3G; + break; } - if (id == -1) - return SkBitmap(); - else - return *ResourceBundle::GetSharedInstance().GetBitmapNamed(id); + } else if (cellular->network_technology() == NETWORK_TECHNOLOGY_1XRTT) { + switch (cellular->GetDataLeft()) { + case CellularNetwork::DATA_NONE: + id = IDR_STATUSBAR_NETWORK_1X_ERROR; + break; + case CellularNetwork::DATA_VERY_LOW: + case CellularNetwork::DATA_LOW: + case CellularNetwork::DATA_NORMAL: + id = IDR_STATUSBAR_NETWORK_1X; + break; + } + } + if (id == -1) + return SkBitmap(); + else + return *ResourceBundle::GetSharedInstance().GetBitmapNamed(id); } // static diff --git a/chrome/browser/chromeos/status/network_menu_button.cc b/chrome/browser/chromeos/status/network_menu_button.cc index 63df514..cc0c604 100644 --- a/chrome/browser/chromeos/status/network_menu_button.cc +++ b/chrome/browser/chromeos/status/network_menu_button.cc @@ -53,6 +53,7 @@ void NetworkMenuButton::AnimationProgressed(const Animation* animation) { if (animation == &animation_connecting_) { SetIcon(IconForNetworkConnecting(animation_connecting_.GetCurrentValue(), false)); + // No need to set the badge here, because it should already be set. SchedulePaint(); } else { MenuButton::AnimationProgressed(animation); @@ -71,66 +72,14 @@ void NetworkMenuButton::DrawIcon(gfx::Canvas* canvas) { // NetworkMenuButton, NetworkLibrary::NetworkManagerObserver implementation: void NetworkMenuButton::OnNetworkManagerChanged(NetworkLibrary* cros) { - ResourceBundle& rb = ResourceBundle::GetSharedInstance(); - if (CrosLibrary::Get()->EnsureLoaded()) { - const Network* network = cros->active_network(); - if (cros->wifi_connecting() || cros->cellular_connecting()) { - // Start the connecting animation if not running. - if (!animation_connecting_.is_animating()) { - animation_connecting_.Reset(); - animation_connecting_.StartThrobbing(-1); - SetIcon(IconForNetworkConnecting(0, false)); - } - std::string network_name = cros->wifi_connecting() ? - cros->wifi_network()->name() : cros->cellular_network()->name(); - bool configuring = cros->wifi_connecting() ? - cros->wifi_network()->configuring() : - cros->cellular_network()->configuring(); - SetTooltipText( - l10n_util::GetStringF(configuring ? - IDS_STATUSBAR_NETWORK_CONFIGURING_TOOLTIP : - IDS_STATUSBAR_NETWORK_CONNECTING_TOOLTIP, - UTF8ToWide(network_name))); - } else { - // Stop connecting animation since we are not connecting. - animation_connecting_.Stop(); - if (!cros->Connected()) { - SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0)); - SetTooltipText(l10n_util::GetString( - IDS_STATUSBAR_NETWORK_NO_NETWORK_TOOLTIP)); - } else { - SetNetworkIcon(network); - } - } - SetNetworkBadge(cros, network); - } else { - SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0)); - SetBadge(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_WARNING)); - SetTooltipText(l10n_util::GetString( - IDS_STATUSBAR_NETWORK_NO_NETWORK_TOOLTIP)); - } - - RefreshNetworkObserver(cros); - SchedulePaint(); - UpdateMenu(); + OnNetworkChanged(cros, cros->active_network()); } //////////////////////////////////////////////////////////////////////////////// // NetworkMenuButton, NetworkLibrary::NetworkObserver implementation: void NetworkMenuButton::OnNetworkChanged(NetworkLibrary* cros, const Network* network) { - ResourceBundle& rb = ResourceBundle::GetSharedInstance(); - if (CrosLibrary::Get()->EnsureLoaded()) { - // Always show the active network connection, if any. - SetNetworkIcon(network); - SetNetworkBadge(cros, network); - } else { - SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0)); - SetBadge(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_WARNING)); - SetTooltipText(l10n_util::GetString( - IDS_STATUSBAR_NETWORK_NO_NETWORK_TOOLTIP)); - } - + SetNetworkIcon(cros, network); RefreshNetworkObserver(cros); SchedulePaint(); UpdateMenu(); @@ -163,50 +112,81 @@ bool NetworkMenuButton::ShouldOpenButtonOptions() const { //////////////////////////////////////////////////////////////////////////////// // NetworkMenuButton, private methods -void NetworkMenuButton::SetNetworkIcon(const Network* network) { +void NetworkMenuButton::SetNetworkIcon(NetworkLibrary* cros, + const Network* network) { ResourceBundle& rb = ResourceBundle::GetSharedInstance(); - if (network && network->is_active()) { - if (network->type() == TYPE_ETHERNET) { - SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_WIRED)); - SetTooltipText( - l10n_util::GetStringF( - IDS_STATUSBAR_NETWORK_CONNECTED_TOOLTIP, - l10n_util::GetString(IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET))); - } else if (network->type() == TYPE_WIFI) { - const WifiNetwork* wifi = static_cast<const WifiNetwork*>(network); - SetIcon(IconForNetworkStrength(wifi->strength(), false)); - SetTooltipText(l10n_util::GetStringF( - IDS_STATUSBAR_NETWORK_CONNECTED_TOOLTIP, - UTF8ToWide(wifi->name()))); - } else if (network->type() == TYPE_CELLULAR) { - const CellularNetwork* cellular = - static_cast<const CellularNetwork*>(network); - if (cellular->GetDataLeft() == 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(cellular->name()))); - } + + if (!cros || !CrosLibrary::Get()->EnsureLoaded()) { + SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0)); + SetBadge(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_WARNING)); + SetTooltipText(l10n_util::GetString( + IDS_STATUSBAR_NETWORK_NO_NETWORK_TOOLTIP)); + return; } -} -void NetworkMenuButton::SetNetworkBadge(NetworkLibrary* cros, - const Network* network) { - ResourceBundle& rb = ResourceBundle::GetSharedInstance(); - // Figure out whether or not to show a badge. - if (network && network->type() == TYPE_CELLULAR && - (network->is_active() || network->connecting())) { - const CellularNetwork* cellular - = static_cast<const CellularNetwork*>(network); - SetBadge(BadgeForNetworkTechnology(cellular)); - } else if (!cros->Connected() && !cros->Connecting()) { + if (!cros->Connected() && !cros->Connecting()) { + animation_connecting_.Stop(); + SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0)); SetBadge(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_DISCONNECTED)); + SetTooltipText(l10n_util::GetString( + IDS_STATUSBAR_NETWORK_NO_NETWORK_TOOLTIP)); + return; + } + + if (cros->wifi_connecting() || cros->cellular_connecting()) { + // Start the connecting animation if not running. + if (!animation_connecting_.is_animating()) { + animation_connecting_.Reset(); + animation_connecting_.StartThrobbing(-1); + SetIcon(IconForNetworkConnecting(0, false)); + } + const WirelessNetwork* wireless = NULL; + if (cros->wifi_connecting()) { + wireless = cros->wifi_network(); + SetBadge(SkBitmap()); + } else { // cellular_connecting + wireless = cros->cellular_network(); + SetBadge(BadgeForNetworkTechnology(cros->cellular_network())); + } + SetTooltipText( + l10n_util::GetStringF(wireless->configuring() ? + IDS_STATUSBAR_NETWORK_CONFIGURING_TOOLTIP : + IDS_STATUSBAR_NETWORK_CONNECTING_TOOLTIP, + UTF8ToWide(wireless->name()))); } else { - SetBadge(SkBitmap()); + // Stop connecting animation since we are not connecting. + animation_connecting_.Stop(); + // Only set the icon, if it is an active network that changed. + if (network && network->is_active()) { + if (network->type() == TYPE_ETHERNET) { + SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_WIRED)); + SetBadge(SkBitmap()); + SetTooltipText( + l10n_util::GetStringF( + IDS_STATUSBAR_NETWORK_CONNECTED_TOOLTIP, + l10n_util::GetString(IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET))); + } else if (network->type() == TYPE_WIFI) { + const WifiNetwork* wifi = static_cast<const WifiNetwork*>(network); + SetIcon(IconForNetworkStrength(wifi->strength(), false)); + SetBadge(SkBitmap()); + SetTooltipText(l10n_util::GetStringF( + IDS_STATUSBAR_NETWORK_CONNECTED_TOOLTIP, + UTF8ToWide(wifi->name()))); + } else if (network->type() == TYPE_CELLULAR) { + const CellularNetwork* cellular = + static_cast<const CellularNetwork*>(network); + if (cellular->GetDataLeft() == CellularNetwork::DATA_NONE) { + // If no data, then we show 0 bars. + SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0)); + } else { + SetIcon(IconForNetworkStrength(cellular)); + } + SetBadge(BadgeForNetworkTechnology(cellular)); + SetTooltipText(l10n_util::GetStringF( + IDS_STATUSBAR_NETWORK_CONNECTED_TOOLTIP, + UTF8ToWide(cellular->name()))); + } + } } } diff --git a/chrome/browser/chromeos/status/network_menu_button.h b/chrome/browser/chromeos/status/network_menu_button.h index 3dfe007..76c3dce 100644 --- a/chrome/browser/chromeos/status/network_menu_button.h +++ b/chrome/browser/chromeos/status/network_menu_button.h @@ -80,8 +80,7 @@ class NetworkMenuButton : public StatusAreaButton, virtual bool ShouldOpenButtonOptions() const; private: - void SetNetworkIcon(const Network* network); - void SetNetworkBadge(NetworkLibrary* cros, const Network* network); + void SetNetworkIcon(NetworkLibrary* cros, const Network* network); // Called when the active network has possibly changed. This will remove // old network observer and add a network observer for the active network. |