Skip to content

Commit 41cfd3f

Browse files
MonkopediaAndroid (Google) Code Review
authored andcommitted
Merge "Fix blank tiles on QS rotate" into mnc-dev
2 parents a910a04 + 878c093 commit 41cfd3f

3 files changed

Lines changed: 35 additions & 17 deletions

File tree

packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ public class CellularTile extends QSTile<QSTile.SignalState> {
4545
private final MobileDataController mDataController;
4646
private final CellularDetailAdapter mDetailAdapter;
4747

48+
private final CellSignalCallback mSignalCallback = new CellSignalCallback();
49+
4850
public CellularTile(Host host) {
4951
super(host);
5052
mController = host.getNetworkController();
@@ -90,8 +92,10 @@ protected void handleClick() {
9092
protected void handleUpdateState(SignalState state, Object arg) {
9193
state.visible = mController.hasMobileDataFeature();
9294
if (!state.visible) return;
93-
final CallbackInfo cb = (CallbackInfo) arg;
94-
if (cb == null) return;
95+
CallbackInfo cb = (CallbackInfo) arg;
96+
if (cb == null) {
97+
cb = mSignalCallback.mInfo;
98+
}
9599

96100
final Resources r = mContext.getResources();
97101
final int iconId = cb.noSim ? R.drawable.ic_qs_no_sim
@@ -152,7 +156,7 @@ private static final class CallbackInfo {
152156
boolean isDataTypeIconWide;
153157
}
154158

155-
private final SignalCallback mSignalCallback = new SignalCallbackAdapter() {
159+
private final class CellSignalCallback extends SignalCallbackAdapter {
156160
private final CallbackInfo mInfo = new CallbackInfo();
157161
@Override
158162
public void setWifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon,

packages/SystemUI/src/com/android/systemui/qs/tiles/IntentTile.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ public class IntentTile extends QSTile<QSTile.State> {
4545
private int mCurrentUserId;
4646
private String mIntentPackage;
4747

48+
private Intent mLastIntent;
49+
4850
private IntentTile(Host host, String action) {
4951
super(host);
5052
mContext.registerReceiver(mReceiver, new IntentFilter(action));
@@ -112,8 +114,16 @@ private void sendIntent(String type, PendingIntent pi, String uri) {
112114

113115
@Override
114116
protected void handleUpdateState(State state, Object arg) {
115-
if (!(arg instanceof Intent)) return;
116-
final Intent intent = (Intent) arg;
117+
Intent intent = (Intent) arg;
118+
if (intent == null) {
119+
if (mLastIntent == null) {
120+
return;
121+
}
122+
// No intent but need to refresh state, just use the last one.
123+
intent = mLastIntent;
124+
}
125+
// Save the last one in case we need it later.
126+
mLastIntent = intent;
117127
state.visible = intent.getBooleanExtra("visible", true);
118128
state.contentDescription = intent.getStringExtra("contentDescription");
119129
state.label = intent.getStringExtra("label");

packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import com.android.systemui.statusbar.policy.NetworkController;
3636
import com.android.systemui.statusbar.policy.NetworkController.AccessPointController;
3737
import com.android.systemui.statusbar.policy.NetworkController.IconState;
38-
import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
3938
import com.android.systemui.statusbar.policy.SignalCallbackAdapter;
4039

4140
import java.util.List;
@@ -49,6 +48,8 @@ public class WifiTile extends QSTile<QSTile.SignalState> {
4948
private final WifiDetailAdapter mDetailAdapter;
5049
private final QSTile.SignalState mStateBeforeClick = newTileState();
5150

51+
private final WifiSignalCallback mSignalCallback = new WifiSignalCallback();
52+
5253
public WifiTile(Host host) {
5354
super(host);
5455
mController = host.getNetworkController();
@@ -118,8 +119,10 @@ protected void handleSecondaryClick() {
118119
protected void handleUpdateState(SignalState state, Object arg) {
119120
state.visible = true;
120121
if (DEBUG) Log.d(TAG, "handleUpdateState arg=" + arg);
121-
if (arg == null) return;
122122
CallbackInfo cb = (CallbackInfo) arg;
123+
if (cb == null) {
124+
cb = mSignalCallback.mInfo;
125+
}
123126

124127
boolean wifiConnected = cb.enabled && (cb.wifiSignalIconId > 0) && (cb.enabledDesc != null);
125128
boolean wifiNotConnected = (cb.wifiSignalIconId > 0) && (cb.enabledDesc == null);
@@ -213,20 +216,21 @@ public String toString() {
213216
}
214217
}
215218

216-
private final SignalCallback mSignalCallback = new SignalCallbackAdapter() {
219+
private final class WifiSignalCallback extends SignalCallbackAdapter {
220+
final CallbackInfo mInfo = new CallbackInfo();
221+
217222
@Override
218223
public void setWifiIndicators(boolean enabled, IconState statusIcon, IconState qsIcon,
219224
boolean activityIn, boolean activityOut, String description) {
220225
if (DEBUG) Log.d(TAG, "onWifiSignalChanged enabled=" + enabled);
221-
final CallbackInfo info = new CallbackInfo();
222-
info.enabled = enabled;
223-
info.connected = qsIcon.visible;
224-
info.wifiSignalIconId = qsIcon.icon;
225-
info.enabledDesc = description;
226-
info.activityIn = activityIn;
227-
info.activityOut = activityOut;
228-
info.wifiSignalContentDescription = qsIcon.contentDescription;
229-
refreshState(info);
226+
mInfo.enabled = enabled;
227+
mInfo.connected = qsIcon.visible;
228+
mInfo.wifiSignalIconId = qsIcon.icon;
229+
mInfo.enabledDesc = description;
230+
mInfo.activityIn = activityIn;
231+
mInfo.activityOut = activityOut;
232+
mInfo.wifiSignalContentDescription = qsIcon.contentDescription;
233+
refreshState(mInfo);
230234
}
231235
};
232236

0 commit comments

Comments
 (0)