Add developer options for grid change for Styles
Bug: 118758696 Change-Id: I66cd36cda495d339e0c2550f0957e3fbcddca477
This commit is contained in:
parent
dedda05568
commit
58de5de42a
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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");
|
||||
|
|
Loading…
Reference in New Issue