| Index: chrome/browser/chromeos/status/network_menu_button.cc
|
| ===================================================================
|
| --- chrome/browser/chromeos/status/network_menu_button.cc (revision 63751)
|
| +++ chrome/browser/chromeos/status/network_menu_button.cc (working copy)
|
| @@ -15,6 +15,7 @@
|
| #include "chrome/browser/chromeos/options/network_config_view.h"
|
| #include "chrome/browser/chromeos/status/status_area_host.h"
|
| #include "gfx/canvas_skia.h"
|
| +#include "gfx/skbitmap_operations.h"
|
| #include "grit/generated_resources.h"
|
| #include "grit/theme_resources.h"
|
| #include "views/window/window.h"
|
| @@ -33,7 +34,7 @@
|
| host_(host),
|
| ALLOW_THIS_IN_INITIALIZER_LIST(animation_connecting_(this)) {
|
| animation_connecting_.SetThrobDuration(kThrobDuration);
|
| - animation_connecting_.SetTweenType(Tween::LINEAR);
|
| + animation_connecting_.SetTweenType(Tween::EASE_IN_OUT);
|
| NetworkChanged(CrosLibrary::Get()->GetNetworkLibrary());
|
| CrosLibrary::Get()->GetNetworkLibrary()->AddObserver(this);
|
| }
|
| @@ -47,14 +48,16 @@
|
|
|
| void NetworkMenuButton::AnimationProgressed(const Animation* animation) {
|
| if (animation == &animation_connecting_) {
|
| - // Figure out which image to draw. We want a value between 0-100.
|
| - // 0 reperesents no signal and 100 represents full signal strength.
|
| - int value = static_cast<int>(animation_connecting_.GetCurrentValue()*100.0);
|
| - if (value < 0)
|
| - value = 0;
|
| - else if (value > 100)
|
| - value = 100;
|
| - SetIcon(IconForNetworkStrength(value, false));
|
| + // Draw animation of bars icon fading in and out.
|
| + // We are fading between 0 bars and a third of the opacity of 4 bars.
|
| + // Use the current value of the animation to calculate the alpha value
|
| + // of how transparent the icon is.
|
| + SetIcon(SkBitmapOperations::CreateBlendedBitmap(
|
| + *ResourceBundle::GetSharedInstance().GetBitmapNamed(
|
| + IDR_STATUSBAR_NETWORK_BARS0),
|
| + *ResourceBundle::GetSharedInstance().GetBitmapNamed(
|
| + IDR_STATUSBAR_NETWORK_BARS4),
|
| + animation_connecting_.GetCurrentValue() / 3));
|
| SchedulePaint();
|
| } else {
|
| MenuButton::AnimationProgressed(animation);
|
| @@ -64,22 +67,6 @@
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // NetworkMenuButton, StatusAreaButton implementation:
|
|
|
| -void NetworkMenuButton::DrawPressed(gfx::Canvas* canvas) {
|
| - // If ethernet connected and not current connecting, then show ethernet
|
| - // pressed icon. Otherwise, show the bars pressed icon.
|
| - if (CrosLibrary::Get()->GetNetworkLibrary()->ethernet_connected() &&
|
| - !animation_connecting_.is_animating())
|
| - canvas->DrawBitmapInt(IconForDisplay(
|
| - *ResourceBundle::GetSharedInstance().
|
| - GetBitmapNamed(IDR_STATUSBAR_NETWORK_WIRED_PRESSED), SkBitmap()),
|
| - 0, 0);
|
| - else
|
| - canvas->DrawBitmapInt(IconForDisplay(
|
| - *ResourceBundle::GetSharedInstance().
|
| - GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS_PRESSED), SkBitmap()),
|
| - 0, 0);
|
| -}
|
| -
|
| void NetworkMenuButton::DrawIcon(gfx::Canvas* canvas) {
|
| canvas->DrawBitmapInt(IconForDisplay(icon(), badge()), 0, 0);
|
| }
|
| @@ -95,7 +82,7 @@
|
| if (!animation_connecting_.is_animating()) {
|
| animation_connecting_.Reset();
|
| animation_connecting_.StartThrobbing(std::numeric_limits<int>::max());
|
| - SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS1));
|
| + SetIcon(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0));
|
| }
|
| std::string network_name = cros->wifi_connecting() ?
|
| cros->wifi_network().name() : cros->cellular_network().name();
|
| @@ -137,23 +124,32 @@
|
| }
|
| }
|
|
|
| - if (!cros->Connected() && !cros->Connecting()) {
|
| - SetBadge(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_DISCONNECTED));
|
| - } else if (!cros->ethernet_connected() && !cros->wifi_connected() &&
|
| - (cros->cellular_connecting() || cros->cellular_connected())) {
|
| - int id = IDR_STATUSBAR_NETWORK_3G;
|
| - 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;
|
| + // Figure out whether or not to show a badge.
|
| + int id = -1;
|
| + if (cros->Connecting()) {
|
| + if (cros->cellular_connecting()) {
|
| + id = IDR_STATUSBAR_NETWORK_3G;
|
| }
|
| + } else if (cros->Connected()) {
|
| + if (!cros->ethernet_connected() && !cros->wifi_connected() &&
|
| + cros->cellular_connected()) {
|
| + switch (cros->cellular_network().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 {
|
| + id = IDR_STATUSBAR_NETWORK_DISCONNECTED;
|
| + }
|
| + if (id != -1) {
|
| SetBadge(*rb.GetBitmapNamed(id));
|
| } else {
|
| SetBadge(SkBitmap());
|
| @@ -174,10 +170,6 @@
|
| NetworkChanged(cros);
|
| }
|
|
|
| -void NetworkMenuButton::SetBadge(const SkBitmap& badge) {
|
| - badge_ = badge;
|
| -}
|
| -
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // NetworkMenuButton, NetworkMenu implementation:
|
|
|
|
|