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