diff --git a/packages/SystemUI/res/layout/signal_cluster_view.xml b/packages/SystemUI/res/layout/signal_cluster_view.xml index 9be90415201d4..66c64c43a30b6 100644 --- a/packages/SystemUI/res/layout/signal_cluster_view.xml +++ b/packages/SystemUI/res/layout/signal_cluster_view.xml @@ -105,4 +105,9 @@ /> + diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java index 744a46b315771..2f02d237078eb 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/SignalClusterView.java @@ -44,10 +44,11 @@ public class SignalClusterView private boolean mMobileVisible = false; private int mMobileStrengthId = 0, mMobileActivityId = 0, mMobileTypeId = 0; private boolean mIsAirplaneMode = false; + private int mAirplaneIconId = 0; private String mWifiDescription, mMobileDescription, mMobileTypeDescription; ViewGroup mWifiGroup, mMobileGroup; - ImageView mWifi, mMobile, mWifiActivity, mMobileActivity, mMobileType; + ImageView mWifi, mMobile, mWifiActivity, mMobileActivity, mMobileType, mAirplane; View mSpacer; public SignalClusterView(Context context) { @@ -79,6 +80,7 @@ public class SignalClusterView mMobileActivity = (ImageView) findViewById(R.id.mobile_inout); mMobileType = (ImageView) findViewById(R.id.mobile_type); mSpacer = findViewById(R.id.spacer); + mAirplane = (ImageView) findViewById(R.id.airplane); apply(); } @@ -92,10 +94,13 @@ public class SignalClusterView mMobile = null; mMobileActivity = null; mMobileType = null; + mSpacer = null; + mAirplane = null; super.onDetachedFromWindow(); } + @Override public void setWifiIndicators(boolean visible, int strengthIcon, int activityIcon, String contentDescription) { mWifiVisible = visible; @@ -106,6 +111,7 @@ public class SignalClusterView apply(); } + @Override public void setMobileDataIndicators(boolean visible, int strengthIcon, int activityIcon, int typeIcon, String contentDescription, String typeContentDescription) { mMobileVisible = visible; @@ -118,8 +124,12 @@ public class SignalClusterView apply(); } - public void setIsAirplaneMode(boolean is) { + @Override + public void setIsAirplaneMode(boolean is, int airplaneIconId) { mIsAirplaneMode = is; + mAirplaneIconId = airplaneIconId; + + apply(); } // Run after each indicator change. @@ -140,7 +150,7 @@ public class SignalClusterView (mWifiVisible ? "VISIBLE" : "GONE"), mWifiStrengthId, mWifiActivityId)); - if (mMobileVisible) { + if (mMobileVisible && !mIsAirplaneMode) { mMobileGroup.setVisibility(View.VISIBLE); mMobile.setImageResource(mMobileStrengthId); mMobileActivity.setImageResource(mMobileActivityId); @@ -150,6 +160,13 @@ public class SignalClusterView mMobileGroup.setVisibility(View.GONE); } + if (mIsAirplaneMode) { + mAirplane.setVisibility(View.VISIBLE); + mAirplane.setImageResource(mAirplaneIconId); + } else { + mAirplane.setVisibility(View.GONE); + } + if (mMobileVisible && mWifiVisible && mIsAirplaneMode) { mSpacer.setVisibility(View.INVISIBLE); } else { 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 95704f676f14a..a05fcc15609f1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java @@ -83,6 +83,7 @@ public class NetworkController extends BroadcastReceiver { int mDataDirectionIconId; // data + data direction on phones int mDataSignalIconId; int mDataTypeIconId; + int mAirplaneIconId; boolean mDataActive; int mMobileActivityIconId; // overlay arrows for data direction int mLastSignalLevel; @@ -161,7 +162,7 @@ public class NetworkController extends BroadcastReceiver { String contentDescription); void setMobileDataIndicators(boolean visible, int strengthIcon, int activityIcon, int typeIcon, String contentDescription, String typeContentDescription); - void setIsAirplaneMode(boolean is); + void setIsAirplaneMode(boolean is, int airplaneIcon); } /** @@ -305,7 +306,7 @@ public class NetworkController extends BroadcastReceiver { mContentDescriptionPhoneSignal, mContentDescriptionDataType); } - cluster.setIsAirplaneMode(mAirplaneMode); + cluster.setIsAirplaneMode(mAirplaneMode, mAirplaneIconId); } public void setStackedMode(boolean stacked) { @@ -997,7 +998,7 @@ public class NetworkController extends BroadcastReceiver { // look again; your radios are now airplanes mContentDescriptionPhoneSignal = mContext.getString( R.string.accessibility_airplane_mode); - mPhoneSignalIconId = mDataSignalIconId = R.drawable.stat_sys_signal_flightmode; + mAirplaneIconId = R.drawable.stat_sys_signal_flightmode; mDataTypeIconId = 0; // combined values from connected wifi take precedence over airplane mode