diff options
5 files changed, 17 insertions, 2 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.java b/packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.java index 2a2bc0923e1b..dfd3f735dfaa 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.java +++ b/packages/SystemUI/src/com/android/systemui/qs/AutoAddTracker.java @@ -72,6 +72,12 @@ public class AutoAddTracker { } } + public void setTileRemoved(String tile) { + if (mAutoAdded.remove(tile)) { + saveTiles(); + } + } + public void destroy() { mContext.getContentResolver().unregisterContentObserver(mObserver); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSHost.java b/packages/SystemUI/src/com/android/systemui/qs/QSHost.java index 84524a62adfa..84fa7004f363 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSHost.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSHost.java @@ -32,6 +32,7 @@ public interface QSHost { void removeCallback(Callback callback); TileServices getTileServices(); void removeTile(String tileSpec); + void unmarkTileAsAutoAdded(String tileSpec); int indexOf(String tileSpec); diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java index bb69b7a17660..86e69e34fb9e 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java @@ -231,6 +231,11 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory> { changeTileSpecs(tileSpecs-> tileSpecs.remove(spec)); } + @Override + public void unmarkTileAsAutoAdded(String spec) { + mAutoTiles.unmarkTileAsAutoAdded(spec); + } + public void addTile(String spec) { changeTileSpecs(tileSpecs-> tileSpecs.add(spec)); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java index 5bab3e8f39a4..3109deaf7239 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java @@ -78,6 +78,7 @@ public class WorkModeTile extends QSTileImpl<BooleanState> implements @Override public void onManagedProfileRemoved() { mHost.removeTile(getTileSpec()); + mHost.unmarkTileAsAutoAdded(getTileSpec()); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java index 446a1d4c3c7b..ab58660f6ed6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java @@ -96,6 +96,10 @@ public class AutoTileManager { Dependency.get(ColorDisplayController.class).setListener(null); } + public void unmarkTileAsAutoAdded(String tabSpec) { + mAutoTracker.setTileRemoved(tabSpec); + } + private final ManagedProfileController.Callback mProfileCallback = new ManagedProfileController.Callback() { @Override @@ -104,8 +108,6 @@ public class AutoTileManager { if (Dependency.get(ManagedProfileController.class).hasActiveProfile()) { mHost.addTile(WORK); mAutoTracker.setTileAdded(WORK); - mHandler.post(() -> Dependency.get(ManagedProfileController.class) - .removeCallback(mProfileCallback)); } } |