From 58de5de42ae14bcd688fccd841c537fe8da6f3e9 Mon Sep 17 00:00:00 2001 From: Hyunyoung Song Date: Wed, 15 May 2019 14:01:30 -0700 Subject: Add developer options for grid change for Styles Bug: 118758696 Change-Id: I66cd36cda495d339e0c2550f0957e3fbcddca477 --- src/com/android/launcher3/Utilities.java | 13 ++++++++ src/com/android/launcher3/config/BaseFlags.java | 4 +-- .../launcher3/settings/SettingsActivity.java | 36 +++++++++++++++++++++- .../launcher3/util/PackageManagerHelper.java | 5 +++ .../android/launcher3/views/OptionsPopupView.java | 14 ++------- 5 files changed, 57 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/com/android/launcher3/Utilities.java b/src/com/android/launcher3/Utilities.java index 732aa9587..af22f1b2f 100644 --- a/src/com/android/launcher3/Utilities.java +++ b/src/com/android/launcher3/Utilities.java @@ -50,6 +50,7 @@ import android.os.Handler; import android.os.Message; import android.os.PowerManager; import android.os.TransactionTooLargeException; +import android.provider.Settings; import android.text.Spannable; import android.text.SpannableString; import android.text.TextUtils; @@ -71,6 +72,7 @@ import com.android.launcher3.icons.LauncherIcons; import com.android.launcher3.shortcuts.DeepShortcutManager; import com.android.launcher3.shortcuts.ShortcutKey; import com.android.launcher3.util.IntArray; +import com.android.launcher3.util.PackageManagerHelper; import com.android.launcher3.views.Transposable; import com.android.launcher3.widget.PendingAddShortcutInfo; @@ -133,6 +135,11 @@ public final class Utilities { Build.TYPE.toLowerCase(Locale.ROOT).contains("debug") || Build.TYPE.toLowerCase(Locale.ROOT).equals("eng"); + public static boolean isDevelopersOptionsEnabled(Context context) { + return Settings.Global.getInt(context.getApplicationContext().getContentResolver(), + Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) != 0; + } + // An intent extra to indicate the horizontal scroll of the wallpaper. public static final String EXTRA_WALLPAPER_OFFSET = "com.android.launcher3.WALLPAPER_OFFSET"; public static final String EXTRA_WALLPAPER_FLAVOR = "com.android.launcher3.WALLPAPER_FLAVOR"; @@ -160,6 +167,12 @@ public final class Utilities { return Log.isLoggable(propertyName, Log.VERBOSE); } + public static boolean existsStyleWallpapers(Context context) { + ResolveInfo ri = context.getPackageManager().resolveActivity( + PackageManagerHelper.getStyleWallpapersIntent(context), 0); + return ri != null; + } + /** * Given a coordinate relative to the descendant, find the coordinate in a parent view's * coordinates. diff --git a/src/com/android/launcher3/config/BaseFlags.java b/src/com/android/launcher3/config/BaseFlags.java index bad8282f5..7e20d11c2 100644 --- a/src/com/android/launcher3/config/BaseFlags.java +++ b/src/com/android/launcher3/config/BaseFlags.java @@ -58,9 +58,7 @@ abstract class BaseFlags { } public static boolean showFlagTogglerUi(Context context) { - return Utilities.IS_DEBUG_DEVICE && - Settings.Global.getInt(context.getApplicationContext().getContentResolver(), - Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) != 0; + return Utilities.IS_DEBUG_DEVICE && Utilities.isDevelopersOptionsEnabled(context); } public static final boolean IS_DOGFOOD_BUILD = false; 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; diff --git a/src/com/android/launcher3/util/PackageManagerHelper.java b/src/com/android/launcher3/util/PackageManagerHelper.java index 7439ac154..7d3a94162 100644 --- a/src/com/android/launcher3/util/PackageManagerHelper.java +++ b/src/com/android/launcher3/util/PackageManagerHelper.java @@ -172,6 +172,11 @@ public class PackageManagerHelper { } } + public static Intent getStyleWallpapersIntent(Context context) { + return new Intent(Intent.ACTION_SET_WALLPAPER).setComponent( + new ComponentName(context.getString(R.string.wallpaper_picker_package), + "com.android.customization.picker.CustomizationPickerActivity")); + } /** * Starts the details activity for {@code info} diff --git a/src/com/android/launcher3/views/OptionsPopupView.java b/src/com/android/launcher3/views/OptionsPopupView.java index 706236907..63f742768 100644 --- a/src/com/android/launcher3/views/OptionsPopupView.java +++ b/src/com/android/launcher3/views/OptionsPopupView.java @@ -152,9 +152,9 @@ public class OptionsPopupView extends ArrowPopup RectF target = new RectF(x - halfSize, y - halfSize, x + halfSize, y + halfSize); ArrayList options = new ArrayList<>(); - int resString = existsStyleWallpapers(launcher) ? + int resString = Utilities.existsStyleWallpapers(launcher) ? R.string.styles_wallpaper_button_text : R.string.wallpaper_button_text; - int resDrawable = existsStyleWallpapers(launcher) ? + int resDrawable = Utilities.existsStyleWallpapers(launcher) ? R.drawable.ic_palette : R.drawable.ic_wallpaper; options.add(new OptionItem(resString, resDrawable, ControlType.WALLPAPER_BUTTON, OptionsPopupView::startWallpaperPicker)); @@ -168,14 +168,6 @@ public class OptionsPopupView extends ArrowPopup show(launcher, target, options); } - private static boolean existsStyleWallpapers(Launcher launcher) { - Intent intent = new Intent(Intent.ACTION_SET_WALLPAPER); - intent.setComponent(new ComponentName(launcher.getString(R.string.wallpaper_picker_package), - "com.android.customization.picker.CustomizationPickerActivity")); - ResolveInfo ri = launcher.getPackageManager().resolveActivity(intent, 0); - return ri != null; - } - public static boolean onWidgetsClicked(View view) { return openWidgets(Launcher.getLauncher(view.getContext())); } @@ -212,7 +204,7 @@ public class OptionsPopupView extends ArrowPopup .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) .putExtra(EXTRA_WALLPAPER_OFFSET, launcher.getWorkspace().getWallpaperOffsetForCenterPage()); - if (!existsStyleWallpapers(launcher)) { + if (!Utilities.existsStyleWallpapers(launcher)) { intent.putExtra(EXTRA_WALLPAPER_FLAVOR, "wallpaper_only"); } else { intent.putExtra(EXTRA_WALLPAPER_FLAVOR, "focus_wallpaper"); -- cgit v1.2.3