diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_bluetooth.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_bluetooth.png
index 08f1993feaf7f..fe9be2ca1179f 100644
Binary files a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_bluetooth.png and b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_bluetooth.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_bluetooth_connected.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_bluetooth_connected.png
index 4a40b14f1ef47..f9b39666ec557 100644
Binary files a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_bluetooth_connected.png and b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_bluetooth_connected.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_in.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_in.png
new file mode 100644
index 0000000000000..883808abc3284
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_in.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_out.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_out.png
new file mode 100644
index 0000000000000..8ea42c79c44e9
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_signal_out.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_in.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_in.png
new file mode 100644
index 0000000000000..71429ae49123d
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_in.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_inout.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_inout.png
new file mode 100644
index 0000000000000..5c34554dddbda
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_inout.png differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_out.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_out.png
new file mode 100644
index 0000000000000..44e7072b7dd16
Binary files /dev/null and b/packages/SystemUI/res/drawable-hdpi/stat_sys_wifi_out.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_data_bluetooth.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_bluetooth.png
index 5ca2415a66708..45a97fd233acb 100644
Binary files a/packages/SystemUI/res/drawable-mdpi/stat_sys_data_bluetooth.png and b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_bluetooth.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_data_bluetooth_connected.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_bluetooth_connected.png
index b727c2d813109..306afd09804f6 100644
Binary files a/packages/SystemUI/res/drawable-mdpi/stat_sys_data_bluetooth_connected.png and b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_bluetooth_connected.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_in.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_in.png
new file mode 100644
index 0000000000000..e429ea1805468
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_in.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_inout.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_inout.png
new file mode 100644
index 0000000000000..e3bcaf955fb52
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_inout.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_out.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_out.png
new file mode 100644
index 0000000000000..26db91e1241b9
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_signal_out.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_in.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_in.png
new file mode 100644
index 0000000000000..957c5baa9832d
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_in.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_inout.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_inout.png
new file mode 100644
index 0000000000000..aec60502a5756
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_inout.png differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_out.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_out.png
new file mode 100644
index 0000000000000..bb8eea0d7fc73
Binary files /dev/null and b/packages/SystemUI/res/drawable-mdpi/stat_sys_wifi_out.png differ
diff --git a/packages/SystemUI/res/layout-xlarge/status_bar_notification_area.xml b/packages/SystemUI/res/layout-xlarge/status_bar_notification_area.xml
index 1e6dbfdee6ebc..a892cd91c1b4e 100644
--- a/packages/SystemUI/res/layout-xlarge/status_bar_notification_area.xml
+++ b/packages/SystemUI/res/layout-xlarge/status_bar_notification_area.xml
@@ -108,6 +108,12 @@
android:orientation="horizontal"
android:gravity="center"
>
+
+
-
+ >
+
-
+
+
+
+
+
+
+
-
+
-
-
-
+
+
mIconViews = new ArrayList();
+
+ private int mIconId = R.drawable.stat_sys_data_bluetooth;
+ private boolean mEnabled;
+
+ public BluetoothController(Context context) {
+ mContext = context;
+
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
+ filter.addAction(BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED);
+ context.registerReceiver(this, filter);
+ }
+
+ public void addIconView(ImageView v) {
+ mIconViews.add(v);
+ }
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+ if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) {
+ int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR);
+ mEnabled = state == BluetoothAdapter.STATE_ON;
+ } else if (action.equals(BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED)) {
+ int state = intent.getIntExtra(BluetoothAdapter.EXTRA_CONNECTION_STATE,
+ BluetoothAdapter.STATE_DISCONNECTED);
+ if (state == BluetoothAdapter.STATE_CONNECTED) {
+ mIconId = R.drawable.stat_sys_data_bluetooth_connected;
+ } else {
+ mIconId = R.drawable.stat_sys_data_bluetooth;
+ }
+ }
+
+
+ int N = mIconViews.size();
+ for (int i=0; i mPhoneSignalIconViews = new ArrayList();
ArrayList mDataDirectionIconViews = new ArrayList();
+ ArrayList mDataDirectionOverlayIconViews = new ArrayList();
ArrayList mWifiIconViews = new ArrayList();
ArrayList mCombinedSignalIconViews = new ArrayList();
ArrayList mDataTypeIconViews = new ArrayList();
ArrayList mLabelViews = new ArrayList();
int mLastPhoneSignalIconId = -1;
int mLastDataDirectionIconId = -1;
+ int mLastDataDirectionOverlayIconId = -1;
int mLastWifiIconId = -1;
int mLastCombinedSignalIconId = -1;
int mLastDataTypeIconId = -1;
@@ -163,6 +165,10 @@ public class NetworkController extends BroadcastReceiver {
mDataDirectionIconViews.add(v);
}
+ public void addDataDirectionOverlayIconView(ImageView v) {
+ mDataDirectionOverlayIconViews.add(v);
+ }
+
public void addWifiIconView(ImageView v) {
mWifiIconViews.add(v);
}
@@ -367,17 +373,15 @@ public class NetworkController extends BroadcastReceiver {
if (Settings.System.getInt(mContext.getContentResolver(),
Settings.System.AIRPLANE_MODE_ON, 0) == 1) {
mPhoneSignalIconId = R.drawable.stat_sys_signal_flightmode;
- mDataActiveSignalIconId = mDataSignalIconId = R.drawable.stat_sys_signal_flightmode;
+ mDataSignalIconId = R.drawable.stat_sys_signal_flightmode;
} else {
mPhoneSignalIconId = R.drawable.stat_sys_signal_null;
- // note we use 0 instead of null
- mDataActiveSignalIconId = mDataSignalIconId = R.drawable.stat_sys_signal_0;
+ mDataSignalIconId = R.drawable.stat_sys_signal_0; // note we use 0 instead of null
}
} else {
if (mSignalStrength == null) {
mPhoneSignalIconId = R.drawable.stat_sys_signal_null;
- // note we use 0 instead of null
- mDataActiveSignalIconId = mDataSignalIconId = R.drawable.stat_sys_signal_0;
+ mDataSignalIconId = R.drawable.stat_sys_signal_0; // note we use 0 instead of null
} else if (isCdma()) {
// If 3G(EV) and 1x network are available than 3G should be
// displayed, displayed RSSI should be from the EV side.
@@ -396,8 +400,6 @@ public class NetworkController extends BroadcastReceiver {
}
mPhoneSignalIconId = iconList[iconLevel];
mDataSignalIconId = TelephonyIcons.DATA_SIGNAL_STRENGTH[mInetCondition][iconLevel];
- mDataActiveSignalIconId
- = TelephonyIcons.DATA_SIGNAL_STRENGTH_ACTIVE[mInetCondition][iconLevel];
} else {
int asu = mSignalStrength.getGsmSignalStrength();
@@ -421,8 +423,6 @@ public class NetworkController extends BroadcastReceiver {
}
mPhoneSignalIconId = iconList[iconLevel];
mDataSignalIconId = TelephonyIcons.DATA_SIGNAL_STRENGTH[mInetCondition][iconLevel];
- mDataActiveSignalIconId
- = TelephonyIcons.DATA_SIGNAL_STRENGTH_ACTIVE[mInetCondition][iconLevel];
}
}
}
@@ -685,6 +685,7 @@ public class NetworkController extends BroadcastReceiver {
Context context = mContext;
int combinedSignalIconId;
+ int dataDirectionOverlayIconId = 0;
int dataTypeIconId;
String label;
int N;
@@ -699,16 +700,22 @@ public class NetworkController extends BroadcastReceiver {
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:
- combinedSignalIconId = mDataActiveSignalIconId;
+ dataDirectionOverlayIconId = R.drawable.stat_sys_signal_inout;
break;
default:
- combinedSignalIconId = mDataSignalIconId;
+ dataDirectionOverlayIconId = 0;
break;
}
+ combinedSignalIconId = mDataSignalIconId;
dataTypeIconId = mDataTypeIconId;
} else if (mBluetoothTethered) {
label = mContext.getString(R.string.bluetooth_tethered);
@@ -724,11 +731,11 @@ public class NetworkController extends BroadcastReceiver {
Slog.d(TAG, "refreshViews combinedSignalIconId=0x"
+ Integer.toHexString(combinedSignalIconId)
+ "/" + getResourceName(combinedSignalIconId)
+ + " dataDirectionOverlayIconId=0x" + Integer.toHexString(dataDirectionOverlayIconId)
+ " mDataActivity=" + mDataActivity
+ " mPhoneSignalIconId=0x" + Integer.toHexString(mPhoneSignalIconId)
+ " mDataDirectionIconId=0x" + Integer.toHexString(mDataDirectionIconId)
+ " mDataSignalIconId=0x" + Integer.toHexString(mDataSignalIconId)
- + " mDataActiveSignalIconId=0x" + Integer.toHexString(mDataActiveSignalIconId)
+ " mDataTypeIconId=0x" + Integer.toHexString(mDataTypeIconId)
+ " mWifiIconId=0x" + Integer.toHexString(mWifiIconId)
+ " mBluetoothTetherIconId=0x" + Integer.toHexString(mBluetoothTetherIconId));
@@ -789,6 +796,22 @@ public class NetworkController extends BroadcastReceiver {
}
}
+ // the data direction overlay
+ if (mLastDataDirectionOverlayIconId != dataDirectionOverlayIconId) {
+ Slog.d(TAG, "changing data overlay icon id to " + dataDirectionOverlayIconId);
+ mLastDataDirectionOverlayIconId = dataDirectionOverlayIconId;
+ N = mDataDirectionOverlayIconViews.size();
+ for (int i=0; i