Loading Android.bp +4 −1 Original line number Diff line number Diff line Loading @@ -111,7 +111,10 @@ android_library { "keyboard_flags_lib", ], plugins: ["androidx.room_room-compiler-plugin"], plugins: [ "SettingsLibMetadata-processor", "androidx.room_room-compiler-plugin", ], errorprone: { extra_check_modules: ["//external/nullaway:nullaway_plugin"], Loading src/com/android/settings/SettingsApplication.java +21 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.settings; import static com.android.settingslib.flags.Flags.settingsCatalyst; import android.app.Application; import android.content.Context; import android.content.pm.PackageManager; Loading @@ -42,13 +44,20 @@ import com.android.settings.overlay.FeatureFactoryImpl; import com.android.settings.spa.SettingsSpaEnvironment; import com.android.settingslib.applications.AppIconCacheManager; import com.android.settingslib.datastore.BackupRestoreStorageManager; import com.android.settingslib.metadata.PreferenceScreenMetadata; import com.android.settingslib.metadata.PreferenceScreenRegistry; import com.android.settingslib.metadata.ProvidePreferenceScreenOptions; import com.android.settingslib.spa.framework.common.SpaEnvironmentFactory; import com.google.android.setupcompat.util.WizardManagerHelper; import java.lang.ref.WeakReference; import java.util.List; /** Settings application which sets up activity embedding rules for the large screen device. */ @ProvidePreferenceScreenOptions( codegenCollector = "com.android.settings/PreferenceScreenCollector/get" ) public class SettingsApplication extends Application { private WeakReference<SettingsHomepageActivity> mHomeActivity = new WeakReference<>(null); Loading @@ -64,6 +73,11 @@ public class SettingsApplication extends Application { public void onCreate() { super.onCreate(); if (settingsCatalyst()) { PreferenceScreenRegistry.INSTANCE.setPreferenceScreensSupplier( this::getPreferenceScreens); } BackupRestoreStorageManager.getInstance(this) .add( new BatterySettingsStorage(this), Loading @@ -90,6 +104,13 @@ public class SettingsApplication extends Application { registerActivityLifecycleCallbacks(new DeveloperOptionsActivityLifecycle()); } /** Returns the screens using metadata. */ protected List<PreferenceScreenMetadata> getPreferenceScreens() { // PreferenceScreenCollector is generated by annotation processor from classes annotated // with @ProvidePreferenceScreen return PreferenceScreenCollector.get(this); } @Override public void onTerminate() { BackupRestoreStorageManager.getInstance(this).removeAll(); Loading src/com/android/settings/dashboard/DashboardFragment.java +58 −25 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ */ package com.android.settings.dashboard; import static com.android.settingslib.flags.Flags.settingsCatalyst; import android.app.Activity; import android.app.settings.SettingsEnums; import android.content.ContentResolver; Loading Loading @@ -53,6 +55,7 @@ import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.drawer.DashboardCategory; import com.android.settingslib.drawer.Tile; import com.android.settingslib.metadata.PreferenceScreenRegistry; import com.android.settingslib.search.Indexable; import java.util.ArrayList; Loading Loading @@ -97,13 +100,17 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment R.array.config_suppress_injected_tile_keys)); mDashboardFeatureProvider = FeatureFactory.getFeatureFactory().getDashboardFeatureProvider(); if (!usePreferenceScreenMetadata() || PreferenceScreenRegistry.INSTANCE.get( getPreferenceScreenBindingKey(context)) == null) { // Load preference controllers from code final List<AbstractPreferenceController> controllersFromCode = createPreferenceControllers(context); // Load preference controllers from xml definition final List<BasePreferenceController> controllersFromXml = PreferenceControllerListHelper .getPreferenceControllersFromXml(context, getPreferenceScreenResId()); // Filter xml-based controllers in case a similar controller is created from code already. // Filter xml-based controllers in case a similar controller is created from code // already. final List<BasePreferenceController> uniqueControllerFromXml = PreferenceControllerListHelper.filterControllers( controllersFromXml, controllersFromCode); Loading @@ -121,6 +128,7 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment lifecycle.addObserver((LifecycleObserver) controller); } }); } // Set metrics category for BasePreferenceController. final int metricCategory = getMetricsCategory(); Loading Loading @@ -272,6 +280,11 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment } } @Override protected final int getPreferenceScreenResId(@NonNull Context context) { return getPreferenceScreenResId(); } @Override protected abstract int getPreferenceScreenResId(); Loading Loading @@ -364,12 +377,32 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment if (resId <= 0) { return; } PreferenceScreen screen; if (usePreferenceScreenMetadata()) { screen = createPreferenceScreen(); setPreferenceScreen(screen); requireActivity().setTitle(screen.getTitle()); } else { addPreferencesFromResource(resId); final PreferenceScreen screen = getPreferenceScreen(); screen = getPreferenceScreen(); } screen.setOnExpandButtonClickListener(this); displayResourceTilesToScreen(screen); } @Override protected final boolean usePreferenceScreenMetadata() { return settingsCatalyst() && enableCatalyst(); } /** * Returns if settings catalyst should be enabled (e.g. check trunk stable flag) on current * screen. */ protected boolean enableCatalyst() { return false; } /** * Perform {@link AbstractPreferenceController#displayPreference(PreferenceScreen)} * on all {@link AbstractPreferenceController}s. Loading Loading
Android.bp +4 −1 Original line number Diff line number Diff line Loading @@ -111,7 +111,10 @@ android_library { "keyboard_flags_lib", ], plugins: ["androidx.room_room-compiler-plugin"], plugins: [ "SettingsLibMetadata-processor", "androidx.room_room-compiler-plugin", ], errorprone: { extra_check_modules: ["//external/nullaway:nullaway_plugin"], Loading
src/com/android/settings/SettingsApplication.java +21 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.settings; import static com.android.settingslib.flags.Flags.settingsCatalyst; import android.app.Application; import android.content.Context; import android.content.pm.PackageManager; Loading @@ -42,13 +44,20 @@ import com.android.settings.overlay.FeatureFactoryImpl; import com.android.settings.spa.SettingsSpaEnvironment; import com.android.settingslib.applications.AppIconCacheManager; import com.android.settingslib.datastore.BackupRestoreStorageManager; import com.android.settingslib.metadata.PreferenceScreenMetadata; import com.android.settingslib.metadata.PreferenceScreenRegistry; import com.android.settingslib.metadata.ProvidePreferenceScreenOptions; import com.android.settingslib.spa.framework.common.SpaEnvironmentFactory; import com.google.android.setupcompat.util.WizardManagerHelper; import java.lang.ref.WeakReference; import java.util.List; /** Settings application which sets up activity embedding rules for the large screen device. */ @ProvidePreferenceScreenOptions( codegenCollector = "com.android.settings/PreferenceScreenCollector/get" ) public class SettingsApplication extends Application { private WeakReference<SettingsHomepageActivity> mHomeActivity = new WeakReference<>(null); Loading @@ -64,6 +73,11 @@ public class SettingsApplication extends Application { public void onCreate() { super.onCreate(); if (settingsCatalyst()) { PreferenceScreenRegistry.INSTANCE.setPreferenceScreensSupplier( this::getPreferenceScreens); } BackupRestoreStorageManager.getInstance(this) .add( new BatterySettingsStorage(this), Loading @@ -90,6 +104,13 @@ public class SettingsApplication extends Application { registerActivityLifecycleCallbacks(new DeveloperOptionsActivityLifecycle()); } /** Returns the screens using metadata. */ protected List<PreferenceScreenMetadata> getPreferenceScreens() { // PreferenceScreenCollector is generated by annotation processor from classes annotated // with @ProvidePreferenceScreen return PreferenceScreenCollector.get(this); } @Override public void onTerminate() { BackupRestoreStorageManager.getInstance(this).removeAll(); Loading
src/com/android/settings/dashboard/DashboardFragment.java +58 −25 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ */ package com.android.settings.dashboard; import static com.android.settingslib.flags.Flags.settingsCatalyst; import android.app.Activity; import android.app.settings.SettingsEnums; import android.content.ContentResolver; Loading Loading @@ -53,6 +55,7 @@ import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.drawer.DashboardCategory; import com.android.settingslib.drawer.Tile; import com.android.settingslib.metadata.PreferenceScreenRegistry; import com.android.settingslib.search.Indexable; import java.util.ArrayList; Loading Loading @@ -97,13 +100,17 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment R.array.config_suppress_injected_tile_keys)); mDashboardFeatureProvider = FeatureFactory.getFeatureFactory().getDashboardFeatureProvider(); if (!usePreferenceScreenMetadata() || PreferenceScreenRegistry.INSTANCE.get( getPreferenceScreenBindingKey(context)) == null) { // Load preference controllers from code final List<AbstractPreferenceController> controllersFromCode = createPreferenceControllers(context); // Load preference controllers from xml definition final List<BasePreferenceController> controllersFromXml = PreferenceControllerListHelper .getPreferenceControllersFromXml(context, getPreferenceScreenResId()); // Filter xml-based controllers in case a similar controller is created from code already. // Filter xml-based controllers in case a similar controller is created from code // already. final List<BasePreferenceController> uniqueControllerFromXml = PreferenceControllerListHelper.filterControllers( controllersFromXml, controllersFromCode); Loading @@ -121,6 +128,7 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment lifecycle.addObserver((LifecycleObserver) controller); } }); } // Set metrics category for BasePreferenceController. final int metricCategory = getMetricsCategory(); Loading Loading @@ -272,6 +280,11 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment } } @Override protected final int getPreferenceScreenResId(@NonNull Context context) { return getPreferenceScreenResId(); } @Override protected abstract int getPreferenceScreenResId(); Loading Loading @@ -364,12 +377,32 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment if (resId <= 0) { return; } PreferenceScreen screen; if (usePreferenceScreenMetadata()) { screen = createPreferenceScreen(); setPreferenceScreen(screen); requireActivity().setTitle(screen.getTitle()); } else { addPreferencesFromResource(resId); final PreferenceScreen screen = getPreferenceScreen(); screen = getPreferenceScreen(); } screen.setOnExpandButtonClickListener(this); displayResourceTilesToScreen(screen); } @Override protected final boolean usePreferenceScreenMetadata() { return settingsCatalyst() && enableCatalyst(); } /** * Returns if settings catalyst should be enabled (e.g. check trunk stable flag) on current * screen. */ protected boolean enableCatalyst() { return false; } /** * Perform {@link AbstractPreferenceController#displayPreference(PreferenceScreen)} * on all {@link AbstractPreferenceController}s. Loading