diff options
author | Hyunyoung Song <hyunyoungs@google.com> | 2019-05-16 22:08:43 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-05-16 22:08:43 +0000 |
commit | 0d51988d6e4f72293eeb8f18d36de92da425bd96 (patch) | |
tree | bf7eced26e18e66809362e40397a562b18cd3c25 | |
parent | c2968da3728006942cc105dc562ad04d907dfaea (diff) | |
parent | 58de5de42ae14bcd688fccd841c537fe8da6f3e9 (diff) | |
download | android_packages_apps_Trebuchet-0d51988d6e4f72293eeb8f18d36de92da425bd96.tar.gz android_packages_apps_Trebuchet-0d51988d6e4f72293eeb8f18d36de92da425bd96.tar.bz2 android_packages_apps_Trebuchet-0d51988d6e4f72293eeb8f18d36de92da425bd96.zip |
Merge "Add developer options for grid change for Styles Bug: 118758696" into ub-launcher3-qt-dev
-rw-r--r-- | AndroidManifest-common.xml | 4 | ||||
-rw-r--r-- | res/xml/launcher_preferences.xml | 6 | ||||
-rw-r--r-- | src/com/android/launcher3/Utilities.java | 13 | ||||
-rw-r--r-- | src/com/android/launcher3/config/BaseFlags.java | 4 | ||||
-rw-r--r-- | src/com/android/launcher3/settings/SettingsActivity.java | 36 | ||||
-rw-r--r-- | src/com/android/launcher3/util/PackageManagerHelper.java | 5 | ||||
-rw-r--r-- | src/com/android/launcher3/views/OptionsPopupView.java | 14 |
7 files changed, 65 insertions, 17 deletions
diff --git a/AndroidManifest-common.xml b/AndroidManifest-common.xml index 819e6bcc9..ef5bb2672 100644 --- a/AndroidManifest-common.xml +++ b/AndroidManifest-common.xml @@ -154,13 +154,13 @@ <!-- The content provider for exposing various launcher grid options. - TODO: Enable when all apps columns are correct TODO: Add proper permissions + --> <provider android:name="com.android.launcher3.graphics.GridOptionsProvider" android:authorities="${packageName}.grid_control" + android:enabled="false" android:exported="true" /> - --> <!-- The settings activity. To extend point settings_fragment_name to appropriate fragment class diff --git a/res/xml/launcher_preferences.xml b/res/xml/launcher_preferences.xml index 7e7220813..3455cb866 100644 --- a/res/xml/launcher_preferences.xml +++ b/res/xml/launcher_preferences.xml @@ -44,6 +44,12 @@ android:defaultValue="@bool/allow_rotation" android:persistent="true" /> + <SwitchPreference + android:key="pref_grid_options" + android:title="Enable grid options" + android:defaultValue="false" + android:persistent="true" /> + <androidx.preference.PreferenceScreen android:key="pref_developer_options" android:persistent="false" 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<OptionItem> 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"); |