diff options
| author | 2015-07-22 12:56:40 +0000 | |
|---|---|---|
| committer | 2015-07-22 12:56:40 +0000 | |
| commit | 41cfd3f8c0df036345807f87b828b4b68bdaffdf (patch) | |
| tree | 7f5ff865ef1e5c371837b1561a104f581eb52124 | |
| parent | a910a04b8a079a01d684266875eb18c318012de4 (diff) | |
| parent | 878c093336b324962f1b659aa29c79caed75ef2f (diff) | |
Merge "Fix blank tiles on QS rotate" into mnc-dev
3 files changed, 35 insertions, 17 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java index 07406b98f8be..f3ad9d803394 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java @@ -45,6 +45,8 @@ public class CellularTile extends QSTile<QSTile.SignalState> { private final MobileDataController mDataController; private final CellularDetailAdapter mDetailAdapter; + private final CellSignalCallback mSignalCallback = new CellSignalCallback(); + public CellularTile(Host host) { super(host); mController = host.getNetworkController(); @@ -90,8 +92,10 @@ public class CellularTile extends QSTile<QSTile.SignalState> { protected void handleUpdateState(SignalState state, Object arg) { state.visible = mController.hasMobileDataFeature(); if (!state.visible) return; - final CallbackInfo cb = (CallbackInfo) arg; - if (cb == null) return; + CallbackInfo cb = (CallbackInfo) arg; + if (cb == null) { + cb = mSignalCallback.mInfo; + } final Resources r = mContext.getResources(); final int iconId = cb.noSim ? R.drawable.ic_qs_no_sim @@ -152,7 +156,7 @@ public class CellularTile extends QSTile<QSTile.SignalState> { boolean isDataTypeIconWide; } - private final SignalCallback mSignalCallback = new SignalCallbackAdapter() { + private final class CellSignalCallback extends SignalCallbackAdapter { private final CallbackInfo mInfo = new CallbackInfo(); @Override public void setWifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon, diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/IntentTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/IntentTile.java index f7f7acb8a072..3d0dc7b5c1a2 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/IntentTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/IntentTile.java @@ -45,6 +45,8 @@ public class IntentTile extends QSTile<QSTile.State> { private int mCurrentUserId; private String mIntentPackage; + private Intent mLastIntent; + private IntentTile(Host host, String action) { super(host); mContext.registerReceiver(mReceiver, new IntentFilter(action)); @@ -112,8 +114,16 @@ public class IntentTile extends QSTile<QSTile.State> { @Override protected void handleUpdateState(State state, Object arg) { - if (!(arg instanceof Intent)) return; - final Intent intent = (Intent) arg; + Intent intent = (Intent) arg; + if (intent == null) { + if (mLastIntent == null) { + return; + } + // No intent but need to refresh state, just use the last one. + intent = mLastIntent; + } + // Save the last one in case we need it later. + mLastIntent = intent; state.visible = intent.getBooleanExtra("visible", true); state.contentDescription = intent.getStringExtra("contentDescription"); state.label = intent.getStringExtra("label"); diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java index 3bfff2faba08..e654efd4dd2a 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java @@ -35,7 +35,6 @@ import com.android.systemui.qs.SignalTileView; import com.android.systemui.statusbar.policy.NetworkController; import com.android.systemui.statusbar.policy.NetworkController.AccessPointController; import com.android.systemui.statusbar.policy.NetworkController.IconState; -import com.android.systemui.statusbar.policy.NetworkController.SignalCallback; import com.android.systemui.statusbar.policy.SignalCallbackAdapter; import java.util.List; @@ -49,6 +48,8 @@ public class WifiTile extends QSTile<QSTile.SignalState> { private final WifiDetailAdapter mDetailAdapter; private final QSTile.SignalState mStateBeforeClick = newTileState(); + private final WifiSignalCallback mSignalCallback = new WifiSignalCallback(); + public WifiTile(Host host) { super(host); mController = host.getNetworkController(); @@ -118,8 +119,10 @@ public class WifiTile extends QSTile<QSTile.SignalState> { protected void handleUpdateState(SignalState state, Object arg) { state.visible = true; if (DEBUG) Log.d(TAG, "handleUpdateState arg=" + arg); - if (arg == null) return; CallbackInfo cb = (CallbackInfo) arg; + if (cb == null) { + cb = mSignalCallback.mInfo; + } boolean wifiConnected = cb.enabled && (cb.wifiSignalIconId > 0) && (cb.enabledDesc != null); boolean wifiNotConnected = (cb.wifiSignalIconId > 0) && (cb.enabledDesc == null); @@ -213,20 +216,21 @@ public class WifiTile extends QSTile<QSTile.SignalState> { } } - private final SignalCallback mSignalCallback = new SignalCallbackAdapter() { + private final class WifiSignalCallback extends SignalCallbackAdapter { + final CallbackInfo mInfo = new CallbackInfo(); + @Override public void setWifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon, boolean activityIn, boolean activityOut, String description) { if (DEBUG) Log.d(TAG, "onWifiSignalChanged enabled=" + enabled); - final CallbackInfo info = new CallbackInfo(); - info.enabled = enabled; - info.connected = qsIcon.visible; - info.wifiSignalIconId = qsIcon.icon; - info.enabledDesc = description; - info.activityIn = activityIn; - info.activityOut = activityOut; - info.wifiSignalContentDescription = qsIcon.contentDescription; - refreshState(info); + mInfo.enabled = enabled; + mInfo.connected = qsIcon.visible; + mInfo.wifiSignalIconId = qsIcon.icon; + mInfo.enabledDesc = description; + mInfo.activityIn = activityIn; + mInfo.activityOut = activityOut; + mInfo.wifiSignalContentDescription = qsIcon.contentDescription; + refreshState(mInfo); } }; |