summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/SystemUI/src')
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java69
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java1
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java142
3 files changed, 139 insertions, 73 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java
index 325a605..65b022a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java
@@ -18,6 +18,7 @@ package com.android.systemui.statusbar;
import android.content.Context;
import android.util.AttributeSet;
+import android.util.Slog;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
@@ -32,8 +33,16 @@ public class SignalClusterView
extends LinearLayout
implements NetworkController.SignalCluster {
+ static final boolean DEBUG = false;
+ static final String TAG = "SignalClusterView";
+
NetworkController mNC;
+ private boolean mWifiVisible = false;
+ private int mWifiStrengthId = 0, mWifiActivityId = 0;
+ private boolean mMobileVisible = false;
+ private int mMobileStrengthId = 0, mMobileActivityId = 0, mMobileTypeId = 0;
+
ViewGroup mWifiGroup, mMobileGroup;
ImageView mWifi, mMobile, mWifiActivity, mMobileActivity, mMobileType;
@@ -50,6 +59,7 @@ public class SignalClusterView
}
public void setNetworkController(NetworkController nc) {
+ if (DEBUG) Slog.d(TAG, "NetworkController=" + nc);
mNC = nc;
}
@@ -64,37 +74,74 @@ public class SignalClusterView
mMobile = (ImageView) findViewById(R.id.mobile_signal);
mMobileActivity = (ImageView) findViewById(R.id.mobile_inout);
mMobileType = (ImageView) findViewById(R.id.mobile_type);
+
+ apply();
}
@Override
protected void onDetachedFromWindow() {
+ mWifiGroup = null;
+ mWifi = null;
+ mWifiActivity = null;
+ mMobileGroup = null;
+ mMobile = null;
+ mMobileActivity = null;
+ mMobileType = null;
+
super.onDetachedFromWindow();
}
public void setWifiIndicators(boolean visible, int strengthIcon, int activityIcon) {
+ mWifiVisible = visible;
+ mWifiStrengthId = strengthIcon;
+ mWifiActivityId = activityIcon;
+
+ apply();
+ }
+
+ public void setMobileDataIndicators(boolean visible, int strengthIcon, int activityIcon,
+ int typeIcon) {
+ mMobileVisible = visible;
+ mMobileStrengthId = strengthIcon;
+ mMobileActivityId = activityIcon;
+ mMobileTypeId = typeIcon;
+
+ apply();
+ }
+
+ // Run after each indicator change.
+ private void apply() {
if (mWifiGroup == null) return;
- if (visible) {
+ if (mWifiVisible) {
mWifiGroup.setVisibility(View.VISIBLE);
- mWifi.setImageResource(strengthIcon);
- mWifiActivity.setImageResource(activityIcon);
+ mWifi.setImageResource(mWifiStrengthId);
+ mWifiActivity.setImageResource(mWifiActivityId);
} else {
mWifiGroup.setVisibility(View.GONE);
}
- }
- public void setMobileDataIndicators(boolean visible, int strengthIcon, int activityIcon,
- int typeIcon) {
- if (mMobileGroup == null) return;
+ if (DEBUG) Slog.d(TAG,
+ String.format("wifi: %s sig=%d act=%d",
+ (mWifiVisible ? "VISIBLE" : "GONE"),
+ mWifiStrengthId, mWifiActivityId));
- if (visible) {
+ if (mMobileVisible) {
mMobileGroup.setVisibility(View.VISIBLE);
- mMobile.setImageResource(strengthIcon);
- mMobileActivity.setImageResource(activityIcon);
- mMobileType.setImageResource(typeIcon);
+ mMobile.setImageResource(mMobileStrengthId);
+ mMobileActivity.setImageResource(mMobileActivityId);
+ mMobileType.setImageResource(mMobileTypeId);
} else {
mMobileGroup.setVisibility(View.GONE);
}
+
+ if (DEBUG) Slog.d(TAG,
+ String.format("mobile: %s sig=%d act=%d typ=%d",
+ (mMobileVisible ? "VISIBLE" : "GONE"),
+ mMobileStrengthId, mMobileActivityId, mMobileTypeId));
+
+ mMobileType.setVisibility(
+ !mWifiVisible ? View.VISIBLE : View.GONE);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index 81c25e0..71cbc61 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -348,6 +348,7 @@ public class PhoneStatusBar extends StatusBar {
final SignalClusterView signalCluster =
(SignalClusterView)sb.findViewById(R.id.signal_cluster);
mNetworkController.addSignalCluster(signalCluster);
+ signalCluster.setNetworkController(mNetworkController);
// Recents Panel
updateRecentsPanel();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
index 1a24d05..16db1d7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
@@ -79,11 +79,11 @@ public class NetworkController extends BroadcastReceiver {
String mNetworkNameDefault;
String mNetworkNameSeparator;
int mPhoneSignalIconId;
- int mDataDirectionIconId;
- int mDataDirectionOverlayIconId;
+ int mDataDirectionIconId; // data + data direction on phones
int mDataSignalIconId;
int mDataTypeIconId;
boolean mDataActive;
+ int mMobileActivityIconId; // overlay arrows for data direction
String mContentDescriptionPhoneSignal;
String mContentDescriptionWifi;
@@ -97,6 +97,7 @@ public class NetworkController extends BroadcastReceiver {
int mWifiLevel;
String mWifiSsid;
int mWifiIconId = 0;
+ int mWifiActivityIconId = 0; // overlay arrows for wifi direction
int mWifiActivity = WifiManager.DATA_ACTIVITY_NONE;
// bluetooth
@@ -221,8 +222,17 @@ public class NetworkController extends BroadcastReceiver {
mLabelViews.add(v);
}
- public void addSignalCluster(SignalCluster v) {
- mSignalClusters.add(v);
+ public void addSignalCluster(SignalCluster cluster) {
+ mSignalClusters.add(cluster);
+ cluster.setWifiIndicators(
+ mWifiEnabled,
+ mWifiIconId,
+ mWifiActivityIconId);
+ cluster.setMobileDataIndicators(
+ hasMobileDataFeature(),
+ mPhoneSignalIconId,
+ mMobileActivityIconId,
+ mDataTypeIconId);
}
public void setStackedMode(boolean stacked) {
@@ -670,7 +680,7 @@ public class NetworkController extends BroadcastReceiver {
if (mDataAndWifiStacked) {
mWifiIconId = 0;
} else {
- mWifiIconId = WifiIcons.WIFI_SIGNAL_STRENGTH[0][0];
+ mWifiIconId = mWifiEnabled ? WifiIcons.WIFI_SIGNAL_STRENGTH[0][0] : 0;
}
mContentDescriptionWifi = mContext.getString(R.string.accessibility_no_wifi);
}
@@ -735,85 +745,93 @@ public class NetworkController extends BroadcastReceiver {
// ===== Update the views =======================================================
- // figure out what to show- there should be one connected network or nothing
- // General order of preference is: wifi, 3G than bluetooth. This might vary by product.
void refreshViews() {
Context context = mContext;
- int combinedSignalIconId;
- int dataDirectionOverlayIconId = 0,
- wifiActivityIconId = 0,
- mobileActivityIconId = 0;
- int dataTypeIconId;
- String label;
+ int combinedSignalIconId = 0;
+ int combinedActivityIconId = 0;
+ String label = "";
int N;
+ if (mDataConnected) {
+ label = mNetworkName;
+ combinedSignalIconId = mDataSignalIconId;
+ switch (mDataActivity) {
+ case TelephonyManager.DATA_ACTIVITY_IN:
+ mMobileActivityIconId = R.drawable.stat_sys_signal_in;
+ break;
+ case TelephonyManager.DATA_ACTIVITY_OUT:
+ mMobileActivityIconId = R.drawable.stat_sys_signal_out;
+ break;
+ case TelephonyManager.DATA_ACTIVITY_INOUT:
+ mMobileActivityIconId = R.drawable.stat_sys_signal_inout;
+ break;
+ default:
+ mMobileActivityIconId = 0;
+ break;
+ }
+
+ combinedActivityIconId = mMobileActivityIconId;
+ combinedSignalIconId = mDataSignalIconId; // set by updateDataIcon()
+ mContentDescriptionCombinedSignal = mContentDescriptionDataType;
+ }
+
if (mWifiConnected) {
if (mWifiSsid == null) {
label = context.getString(R.string.status_bar_settings_signal_meter_wifi_nossid);
+ mWifiActivityIconId = 0; // no wifis, no bits
} else {
label = mWifiSsid;
switch (mWifiActivity) {
case WifiManager.DATA_ACTIVITY_IN:
- dataDirectionOverlayIconId = R.drawable.stat_sys_wifi_in;
+ mWifiActivityIconId = R.drawable.stat_sys_wifi_in;
break;
case WifiManager.DATA_ACTIVITY_OUT:
- dataDirectionOverlayIconId = R.drawable.stat_sys_wifi_out;
+ mWifiActivityIconId = R.drawable.stat_sys_wifi_out;
break;
case WifiManager.DATA_ACTIVITY_INOUT:
- dataDirectionOverlayIconId = R.drawable.stat_sys_wifi_inout;
+ mWifiActivityIconId = R.drawable.stat_sys_wifi_inout;
break;
case WifiManager.DATA_ACTIVITY_NONE:
break;
}
- wifiActivityIconId = dataDirectionOverlayIconId;
}
- combinedSignalIconId = mWifiIconId;
+
+ combinedActivityIconId = mWifiActivityIconId;
+ combinedSignalIconId = mWifiIconId; // set by updateWifiIcons()
mContentDescriptionCombinedSignal = mContentDescriptionWifi;
- dataTypeIconId = 0;
- } else if (mDataConnected) {
- label = mNetworkName;
- combinedSignalIconId = mDataSignalIconId;
- switch (mDataActivity) {
- case TelephonyManager.DATA_ACTIVITY_IN:
- dataDirectionOverlayIconId = R.drawable.stat_sys_signal_in;
- break;
- case TelephonyManager.DATA_ACTIVITY_OUT:
- dataDirectionOverlayIconId = R.drawable.stat_sys_signal_out;
- break;
- case TelephonyManager.DATA_ACTIVITY_INOUT:
- dataDirectionOverlayIconId = R.drawable.stat_sys_signal_inout;
- break;
- default:
- dataDirectionOverlayIconId = 0;
- break;
- }
- mobileActivityIconId = dataDirectionOverlayIconId;
- combinedSignalIconId = mDataSignalIconId;
- mContentDescriptionCombinedSignal = mContentDescriptionDataType;
- dataTypeIconId = mDataTypeIconId;
- } else if (mBluetoothTethered) {
+ }
+
+ if (mBluetoothTethered) {
label = mContext.getString(R.string.bluetooth_tethered);
combinedSignalIconId = mBluetoothTetherIconId;
mContentDescriptionCombinedSignal = mContext.getString(
R.string.accessibility_bluetooth_tether);
- dataTypeIconId = 0;
- } else if (mAirplaneMode &&
+ }
+
+ if (mAirplaneMode &&
(mServiceState == null || (!hasService() && !mServiceState.isEmergencyOnly()))) {
// Only display the flight-mode icon if not in "emergency calls only" mode.
label = context.getString(R.string.status_bar_settings_signal_meter_disconnected);
- combinedSignalIconId = R.drawable.stat_sys_signal_flightmode;
mContentDescriptionCombinedSignal = mContext.getString(
R.string.accessibility_airplane_mode);
- dataTypeIconId = R.drawable.stat_sys_signal_flightmode; // was 0;
- } else {
+
+ // look again; your radios are now airplanes
+ mPhoneSignalIconId = mDataSignalIconId = R.drawable.stat_sys_signal_flightmode;
+ mDataTypeIconId = 0;
+
+ combinedSignalIconId = mDataSignalIconId;
+ }
+ else if (!mDataConnected && !mWifiConnected && !mBluetoothTethered) {
+ // pretty much totally disconnected
+
label = context.getString(R.string.status_bar_settings_signal_meter_disconnected);
// On devices without mobile radios, we want to show the wifi icon
combinedSignalIconId =
hasMobileDataFeature() ? mDataSignalIconId : mWifiIconId;
mContentDescriptionCombinedSignal = hasMobileDataFeature()
? mContentDescriptionDataType : mContentDescriptionWifi;
- dataTypeIconId = 0;
+ mDataTypeIconId = 0;
}
if (DEBUG) {
@@ -825,7 +843,7 @@ public class NetworkController extends BroadcastReceiver {
+ " combinedSignalIconId=0x"
+ Integer.toHexString(combinedSignalIconId)
+ "/" + getResourceName(combinedSignalIconId)
- + " dataDirectionOverlayIconId=0x" + Integer.toHexString(dataDirectionOverlayIconId)
+ + " combinedActivityIconId=0x" + Integer.toHexString(combinedActivityIconId)
+ " mAirplaneMode=" + mAirplaneMode
+ " mDataActivity=" + mDataActivity
+ " mPhoneSignalIconId=0x" + Integer.toHexString(mPhoneSignalIconId)
@@ -837,21 +855,21 @@ public class NetworkController extends BroadcastReceiver {
}
if (mLastPhoneSignalIconId != mPhoneSignalIconId
- || mLastDataDirectionOverlayIconId != dataDirectionOverlayIconId
+ || mLastDataDirectionOverlayIconId != combinedActivityIconId
|| mLastWifiIconId != mWifiIconId
- || mLastDataTypeIconId != dataTypeIconId)
+ || mLastDataTypeIconId != mDataTypeIconId)
{
// NB: the mLast*s will be updated later
for (SignalCluster cluster : mSignalClusters) {
cluster.setWifiIndicators(
mWifiEnabled,
mWifiIconId,
- wifiActivityIconId);
+ mWifiActivityIconId);
cluster.setMobileDataIndicators(
hasMobileDataFeature(),
mPhoneSignalIconId,
- mobileActivityIconId,
- dataTypeIconId);
+ mMobileActivityIconId,
+ mDataTypeIconId);
}
}
@@ -905,35 +923,35 @@ public class NetworkController extends BroadcastReceiver {
}
// the data network type overlay
- if (mLastDataTypeIconId != dataTypeIconId) {
- mLastDataTypeIconId = dataTypeIconId;
+ if (mLastDataTypeIconId != mDataTypeIconId) {
+ mLastDataTypeIconId = mDataTypeIconId;
N = mDataTypeIconViews.size();
for (int i=0; i<N; i++) {
final ImageView v = mDataTypeIconViews.get(i);
- if (dataTypeIconId == 0) {
+ if (mDataTypeIconId == 0) {
v.setVisibility(View.INVISIBLE);
} else {
v.setVisibility(View.VISIBLE);
- v.setImageResource(dataTypeIconId);
+ v.setImageResource(mDataTypeIconId);
v.setContentDescription(mContentDescriptionDataType);
}
}
}
// the data direction overlay
- if (mLastDataDirectionOverlayIconId != dataDirectionOverlayIconId) {
+ if (mLastDataDirectionOverlayIconId != combinedActivityIconId) {
if (DEBUG) {
- Slog.d(TAG, "changing data overlay icon id to " + dataDirectionOverlayIconId);
+ Slog.d(TAG, "changing data overlay icon id to " + combinedActivityIconId);
}
- mLastDataDirectionOverlayIconId = dataDirectionOverlayIconId;
+ mLastDataDirectionOverlayIconId = combinedActivityIconId;
N = mDataDirectionOverlayIconViews.size();
for (int i=0; i<N; i++) {
final ImageView v = mDataDirectionOverlayIconViews.get(i);
- if (dataDirectionOverlayIconId == 0) {
+ if (combinedActivityIconId == 0) {
v.setVisibility(View.INVISIBLE);
} else {
v.setVisibility(View.VISIBLE);
- v.setImageResource(dataDirectionOverlayIconId);
+ v.setImageResource(combinedActivityIconId);
v.setContentDescription(mContentDescriptionDataType);
}
}