diff options
Diffstat (limited to 'src/com/android/launcher3/settings/SettingsActivity.java')
-rw-r--r-- | src/com/android/launcher3/settings/SettingsActivity.java | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/src/com/android/launcher3/settings/SettingsActivity.java b/src/com/android/launcher3/settings/SettingsActivity.java index 6e7188f3c..18b6094fb 100644 --- a/src/com/android/launcher3/settings/SettingsActivity.java +++ b/src/com/android/launcher3/settings/SettingsActivity.java @@ -24,6 +24,10 @@ import static com.android.launcher3.util.SecureSettingsObserver.newNotificationS import android.app.Activity; import android.app.DialogFragment; import android.app.Fragment; +import android.content.ComponentName; +import android.content.Context; +import android.content.SharedPreferences; +import android.content.pm.PackageManager; import android.os.Bundle; import android.provider.Settings; import android.text.TextUtils; @@ -32,6 +36,7 @@ import com.android.launcher3.LauncherFiles; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.config.FeatureFlags; +import com.android.launcher3.graphics.GridOptionsProvider; import com.android.launcher3.uioverrides.plugins.PluginManagerWrapper; import com.android.launcher3.util.SecureSettingsObserver; @@ -47,7 +52,8 @@ import androidx.recyclerview.widget.RecyclerView; * Settings activity for Launcher. Currently implements the following setting: Allow rotation */ public class SettingsActivity extends Activity - implements OnPreferenceStartFragmentCallback, OnPreferenceStartScreenCallback { + implements OnPreferenceStartFragmentCallback, OnPreferenceStartScreenCallback, + SharedPreferences.OnSharedPreferenceChangeListener{ private static final String DEVELOPER_OPTIONS_KEY = "pref_developer_options"; private static final String FLAGS_PREFERENCE_KEY = "flag_toggler"; @@ -61,6 +67,8 @@ public class SettingsActivity extends Activity private static final int DELAY_HIGHLIGHT_DURATION_MILLIS = 600; public static final String SAVE_HIGHLIGHTED_KEY = "android:preference_highlighted"; + public static final String GRID_OPTIONS_PREFERENCE_KEY = "pref_grid_options"; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -79,6 +87,28 @@ public class SettingsActivity extends Activity .replace(android.R.id.content, f) .commit(); } + Utilities.getPrefs(getApplicationContext()).registerOnSharedPreferenceChangeListener(this); + } + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + if (GRID_OPTIONS_PREFERENCE_KEY.equals(key)) { + + final ComponentName cn = new ComponentName(getApplicationContext(), + GridOptionsProvider.class); + Context c = getApplicationContext(); + int oldValue = c.getPackageManager().getComponentEnabledSetting(cn); + int newValue; + if (Utilities.getPrefs(c).getBoolean(GRID_OPTIONS_PREFERENCE_KEY, false)) { + newValue = PackageManager.COMPONENT_ENABLED_STATE_ENABLED; + } else { + newValue = PackageManager.COMPONENT_ENABLED_STATE_DISABLED; + } + + if (oldValue != newValue) { + c.getPackageManager().setComponentEnabledSetting(cn, newValue, + PackageManager.DONT_KILL_APP); + } + } } private boolean startFragment(String fragment, Bundle args, String key) { @@ -200,6 +230,10 @@ public class SettingsActivity extends Activity // Show if plugins are enabled or flag UI is enabled. return FeatureFlags.showFlagTogglerUi(getContext()) || PluginManagerWrapper.hasPlugins(getContext()); + case GRID_OPTIONS_PREFERENCE_KEY: + return Utilities.isDevelopersOptionsEnabled(getContext()) && + Utilities.IS_DEBUG_DEVICE && + Utilities.existsStyleWallpapers(getContext()); } return true; |