Add visibility control for the UiBlocker
The existing UiBlocker mechanism doesn't support additional visibility control. With that, controllers that want to control their own visibility won't be able to use UiBlocker. Fixes: 223340393 Test: robotest Change-Id: I2df2eb1ce77e2c94bb271a8b68cc8c6004df5c70
This commit is contained in:
@@ -250,6 +250,11 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
|
||||
}
|
||||
mListeningToCategoryChange = false;
|
||||
}
|
||||
mControllers.forEach(controller -> {
|
||||
if (controller instanceof BasePreferenceController.UiBlocker) {
|
||||
((BasePreferenceController) controller).revokeFirstLaunch();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -424,7 +429,14 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
|
||||
for (AbstractPreferenceController controller : controllerList) {
|
||||
final String key = controller.getPreferenceKey();
|
||||
final Preference preference = findPreference(key);
|
||||
if (preference != null) {
|
||||
if (preference == null) {
|
||||
continue;
|
||||
}
|
||||
if (controller instanceof BasePreferenceController.UiBlocker) {
|
||||
final boolean prefVisible =
|
||||
((BasePreferenceController) controller).getSavedPrefVisibility();
|
||||
preference.setVisible(visible && controller.isAvailable() && prefVisible);
|
||||
} else {
|
||||
preference.setVisible(visible && controller.isAvailable());
|
||||
}
|
||||
}
|
||||
@@ -496,6 +508,7 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
|
||||
@Override
|
||||
public void onBlockerWorkFinished(BasePreferenceController controller) {
|
||||
mBlockerController.countDown(controller.getPreferenceKey());
|
||||
controller.setUiBlockerFinished(mBlockerController.isBlockerFinished());
|
||||
}
|
||||
|
||||
protected Preference createPreference(Tile tile) {
|
||||
|
Reference in New Issue
Block a user