summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authorchocobo@chromium.org <chocobo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-23 01:40:59 +0000
committerchocobo@chromium.org <chocobo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-23 01:40:59 +0000
commit3f4e81fcb0fb45e18ff0c7c7f526a3ad6a01e4eb (patch)
tree0902edcd62824a2ed30e31dd9a8bac5a4de1f32c /chrome/browser
parent4aaf0e4df4d31e7862262f334a854c00b4ee4b3f (diff)
downloadchromium_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.cc75
-rw-r--r--chrome/browser/chromeos/status/network_menu_button.cc166
-rw-r--r--chrome/browser/chromeos/status/network_menu_button.h3
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.