Merge changes from topic "slice-highlight" into sc-v2-dev

* changes:
  Add highlight menu keys for all toggle pref controllers and custom slices
  Support slice deep links highlighting menu entries
This commit is contained in:
Jason Chiu
2021-11-02 02:14:09 +00:00
committed by Android (Google) Code Review
124 changed files with 760 additions and 82 deletions

View File

@@ -23,6 +23,7 @@ import android.content.Context;
import android.os.UserHandle; import android.os.UserHandle;
import android.provider.Settings; import android.provider.Settings;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
/** /**
@@ -57,4 +58,9 @@ public class AccessibilityShortcutPreferenceController extends TogglePreferenceC
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
return AVAILABLE; return AVAILABLE;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
} }

View File

@@ -26,6 +26,7 @@ import android.content.Context;
import android.provider.Settings; import android.provider.Settings;
import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityManager;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.accessibility.AccessibilityUtils; import com.android.settingslib.accessibility.AccessibilityUtils;
@@ -98,6 +99,11 @@ public class AccessibilitySlicePreferenceController extends TogglePreferenceCont
return true; return true;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
private AccessibilityServiceInfo getAccessibilityServiceInfo() { private AccessibilityServiceInfo getAccessibilityServiceInfo() {
final AccessibilityManager accessibilityManager = mContext.getSystemService( final AccessibilityManager accessibilityManager = mContext.getSystemService(
AccessibilityManager.class); AccessibilityManager.class);

View File

@@ -22,6 +22,7 @@ import android.text.TextUtils;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
public class DisableAnimationsPreferenceController extends TogglePreferenceController { public class DisableAnimationsPreferenceController extends TogglePreferenceController {
@@ -71,4 +72,9 @@ public class DisableAnimationsPreferenceController extends TogglePreferenceContr
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
return AVAILABLE; return AVAILABLE;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
} }

View File

@@ -20,6 +20,7 @@ import android.content.Context;
import android.graphics.fonts.FontStyle; import android.graphics.fonts.FontStyle;
import android.provider.Settings; import android.provider.Settings;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
/** PreferenceController for displaying all text in bold. */ /** PreferenceController for displaying all text in bold. */
@@ -47,4 +48,9 @@ public class FontWeightAdjustmentPreferenceController extends TogglePreferenceCo
return Settings.Secure.putInt(mContext.getContentResolver(), return Settings.Secure.putInt(mContext.getContentResolver(),
Settings.Secure.FONT_WEIGHT_ADJUSTMENT, (isChecked ? BOLD_TEXT_ADJUSTMENT : 0)); Settings.Secure.FONT_WEIGHT_ADJUSTMENT, (isChecked ? BOLD_TEXT_ADJUSTMENT : 0));
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
} }

View File

@@ -19,6 +19,7 @@ package com.android.settings.accessibility;
import android.content.Context; import android.content.Context;
import android.provider.Settings; import android.provider.Settings;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
public class HighTextContrastPreferenceController extends TogglePreferenceController { public class HighTextContrastPreferenceController extends TogglePreferenceController {
@@ -43,4 +44,9 @@ public class HighTextContrastPreferenceController extends TogglePreferenceContro
return Settings.Secure.putInt(mContext.getContentResolver(), return Settings.Secure.putInt(mContext.getContentResolver(),
Settings.Secure.ACCESSIBILITY_HIGH_TEXT_CONTRAST_ENABLED, (isChecked ? 1 : 0)); Settings.Secure.ACCESSIBILITY_HIGH_TEXT_CONTRAST_ENABLED, (isChecked ? 1 : 0));
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
} }

View File

@@ -21,6 +21,7 @@ import android.provider.Settings;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
public class LargePointerIconPreferenceController extends TogglePreferenceController { public class LargePointerIconPreferenceController extends TogglePreferenceController {
@@ -50,4 +51,9 @@ public class LargePointerIconPreferenceController extends TogglePreferenceContro
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
return AVAILABLE; return AVAILABLE;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
} }

View File

@@ -23,6 +23,7 @@ import androidx.preference.PreferenceScreen;
import com.android.internal.view.RotationPolicy; import com.android.internal.view.RotationPolicy;
import com.android.internal.view.RotationPolicy.RotationPolicyListener; import com.android.internal.view.RotationPolicy.RotationPolicyListener;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStart;
@@ -61,6 +62,11 @@ public class LockScreenRotationPreferenceController extends TogglePreferenceCont
return RotationPolicy.isRotationSupported(mContext) ? AVAILABLE : UNSUPPORTED_ON_DEVICE; return RotationPolicy.isRotationSupported(mContext) ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
@Override @Override
public void onStop() { public void onStop() {
if (mRotationPolicyListener != null) { if (mRotationPolicyListener != null) {

View File

@@ -76,6 +76,11 @@ public class MagnificationGesturesPreferenceController extends TogglePreferenceC
return true; return true;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
@Override @Override
public CharSequence getSummary() { public CharSequence getSummary() {
int resId = 0; int resId = 0;

View File

@@ -82,6 +82,11 @@ public class MagnificationNavbarPreferenceController extends TogglePreferenceCon
return true; return true;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
@Override @Override
public CharSequence getSummary() { public CharSequence getSummary() {
int resId = 0; int resId = 0;

View File

@@ -21,6 +21,7 @@ import android.provider.Settings;
import android.view.KeyCharacterMap; import android.view.KeyCharacterMap;
import android.view.KeyEvent; import android.view.KeyEvent;
import com.android.settings.R;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
@@ -51,4 +52,9 @@ public class PowerButtonEndsCallPreferenceController extends TogglePreferenceCon
return !KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_POWER) return !KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_POWER)
|| !Utils.isVoiceCapable(mContext) ? UNSUPPORTED_ON_DEVICE : AVAILABLE; || !Utils.isVoiceCapable(mContext) ? UNSUPPORTED_ON_DEVICE : AVAILABLE;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
} }

View File

@@ -20,6 +20,7 @@ import android.content.Context;
import android.os.UserHandle; import android.os.UserHandle;
import android.provider.Settings; import android.provider.Settings;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
/** /**
@@ -47,4 +48,9 @@ public class PrimaryMonoPreferenceController extends TogglePreferenceController
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
return AVAILABLE; return AVAILABLE;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
} }

View File

@@ -22,6 +22,7 @@ import android.provider.Settings;
import androidx.preference.Preference; import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
/** PreferenceController for persisting feature activation state after a restart. */ /** PreferenceController for persisting feature activation state after a restart. */
@@ -62,4 +63,9 @@ public class ReduceBrightColorsPersistencePreferenceController extends TogglePre
super.updateState(preference); super.updateState(preference);
preference.setEnabled(mColorDisplayManager.isReduceBrightColorsActivated()); preference.setEnabled(mColorDisplayManager.isReduceBrightColorsActivated());
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
} }

View File

@@ -94,6 +94,11 @@ public class ReduceBrightColorsPreferenceController extends TogglePreferenceCont
mPreference = screen.findPreference(getPreferenceKey()); mPreference = screen.findPreference(getPreferenceKey());
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
@Override @Override
public void onStart() { public void onStart() {
mContext.getContentResolver().registerContentObserver(Settings.Secure.getUriFor( mContext.getContentResolver().registerContentObserver(Settings.Secure.getUriFor(

View File

@@ -22,6 +22,7 @@ import android.os.UserHandle;
import android.provider.Settings; import android.provider.Settings;
import android.util.Log; import android.util.Log;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import java.util.Set; import java.util.Set;
@@ -71,6 +72,11 @@ public class CrossProfileCalendarPreferenceController extends TogglePreferenceCo
CROSS_PROFILE_CALENDAR_ENABLED, value, mManagedUser.getIdentifier()); CROSS_PROFILE_CALENDAR_ENABLED, value, mManagedUser.getIdentifier());
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accounts;
}
static boolean isCrossProfileCalendarDisallowedByAdmin(Context context, int userId) { static boolean isCrossProfileCalendarDisallowedByAdmin(Context context, int userId) {
final Context managedProfileContext = createPackageContextAsUser(context, userId); final Context managedProfileContext = createPackageContextAsUser(context, userId);
final DevicePolicyManager dpm = managedProfileContext.getSystemService( final DevicePolicyManager dpm = managedProfileContext.getSystemService(

View File

@@ -16,33 +16,25 @@
package com.android.settings.accounts; package com.android.settings.accounts;
import android.app.admin.DevicePolicyManager;
import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import android.provider.SearchIndexableResource; import android.provider.SearchIndexableResource;
import android.util.Log; import android.util.Log;
import androidx.preference.Preference;
import androidx.preference.PreferenceGroup;
import androidx.preference.PreferenceManager;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.Indexable;
import com.android.settingslib.search.SearchIndexable; import com.android.settingslib.search.SearchIndexable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* Setting page for managed profile. * Setting page for managed profile.

View File

@@ -19,6 +19,7 @@ package com.android.settings.applications.managedomainurls;
import android.content.Context; import android.content.Context;
import android.provider.Settings; import android.provider.Settings;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
public class InstantAppWebActionPreferenceController extends TogglePreferenceController { public class InstantAppWebActionPreferenceController extends TogglePreferenceController {
@@ -43,4 +44,9 @@ public class InstantAppWebActionPreferenceController extends TogglePreferenceCon
return Settings.Secure.putInt(mContext.getContentResolver(), return Settings.Secure.putInt(mContext.getContentResolver(),
Settings.Secure.INSTANT_APPS_ENABLED, isChecked ? 1 : 0); Settings.Secure.INSTANT_APPS_ENABLED, isChecked ? 1 : 0);
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_apps;
}
} }

View File

@@ -27,6 +27,7 @@ import android.util.Log;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.SwitchPreference; import androidx.preference.SwitchPreference;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
public class AutoRestorePreferenceController extends TogglePreferenceController { public class AutoRestorePreferenceController extends TogglePreferenceController {
@@ -84,4 +85,9 @@ public class AutoRestorePreferenceController extends TogglePreferenceController
return result; return result;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_system;
}
} }

View File

@@ -91,4 +91,10 @@ public class BiometricSettingsAppPreferenceController extends TogglePreferenceCo
public final boolean isSliceable() { public final boolean isSliceable() {
return false; return false;
} }
@Override
public int getSliceHighlightMenuRes() {
// not needed since it's not sliceable
return 0;
}
} }

View File

@@ -73,4 +73,10 @@ public class BiometricSettingsKeyguardPreferenceController extends TogglePrefere
public final boolean isSliceable() { public final boolean isSliceable() {
return false; return false;
} }
@Override
public int getSliceHighlightMenuRes() {
// not needed since it's not sliceable
return 0;
}
} }

View File

@@ -51,4 +51,10 @@ public abstract class FaceSettingsPreferenceController extends TogglePreferenceC
public final boolean isSliceable() { public final boolean isSliceable() {
return false; return false;
} }
@Override
public int getSliceHighlightMenuRes() {
// not needed since it's not sliceable
return 0;
}
} }

View File

@@ -98,7 +98,8 @@ public class BluetoothSliceBuilder {
SettingsSlicesContract.KEY_BLUETOOTH).build(); SettingsSlicesContract.KEY_BLUETOOTH).build();
return SliceBuilderUtils.buildSearchResultPageIntent(context, return SliceBuilderUtils.buildSearchResultPageIntent(context,
BluetoothDashboardFragment.class.getName(), null /* key */, screenTitle, BluetoothDashboardFragment.class.getName(), null /* key */, screenTitle,
SettingsEnums.SETTINGS_CONNECTED_DEVICE_CATEGORY) SettingsEnums.SETTINGS_CONNECTED_DEVICE_CATEGORY,
R.string.menu_key_connected_devices)
.setClassName(context.getPackageName(), SubSettings.class.getName()) .setClassName(context.getPackageName(), SubSettings.class.getName())
.setData(contentUri); .setData(contentUri);
} }

View File

@@ -89,4 +89,7 @@ public abstract class TogglePreferenceController extends BasePreferenceControlle
public boolean isPublicSlice() { public boolean isPublicSlice() {
return false; return false;
} }
@Override
public abstract int getSliceHighlightMenuRes();
} }

View File

@@ -117,6 +117,12 @@ public class LocationTimeZoneDetectionPreferenceController
return false; return false;
} }
@Override
public int getSliceHighlightMenuRes() {
// not needed since it's not sliceable
return 0;
}
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
TimeZoneCapabilities timeZoneCapabilities = TimeZoneCapabilities timeZoneCapabilities =

View File

@@ -19,6 +19,7 @@ package com.android.settings.development.transcode;
import android.content.Context; import android.content.Context;
import android.os.SystemProperties; import android.os.SystemProperties;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
/** /**
@@ -48,4 +49,9 @@ public class TranscodeDefaultOptionPreferenceController extends TogglePreference
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
return AVAILABLE; return AVAILABLE;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_system;
}
} }

View File

@@ -20,6 +20,7 @@ import android.content.Context;
import android.os.SystemProperties; import android.os.SystemProperties;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
/** /**
@@ -50,4 +51,9 @@ public class TranscodeDisableCachePreferenceController extends TogglePreferenceC
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
return AVAILABLE; return AVAILABLE;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_system;
}
} }

View File

@@ -19,6 +19,7 @@ package com.android.settings.development.transcode;
import android.content.Context; import android.content.Context;
import android.os.SystemProperties; import android.os.SystemProperties;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
/** /**
@@ -49,4 +50,9 @@ public class TranscodeGlobalTogglePreferenceController extends TogglePreferenceC
SystemProperties.set(TRANSCODE_ENABLED_PROP_KEY, String.valueOf(isChecked)); SystemProperties.set(TRANSCODE_ENABLED_PROP_KEY, String.valueOf(isChecked));
return true; return true;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_system;
}
} }

View File

@@ -20,6 +20,7 @@ import android.content.Context;
import android.os.SystemProperties; import android.os.SystemProperties;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
/** /**
@@ -50,4 +51,9 @@ public class TranscodeNotificationPreferenceController extends TogglePreferenceC
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
return AVAILABLE; return AVAILABLE;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_system;
}
} }

View File

@@ -19,6 +19,7 @@ package com.android.settings.development.transcode;
import android.content.Context; import android.content.Context;
import android.os.SystemProperties; import android.os.SystemProperties;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
/** /**
@@ -48,4 +49,9 @@ public class TranscodeUserControlPreferenceController extends TogglePreferenceCo
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
return AVAILABLE; return AVAILABLE;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_system;
}
} }

View File

@@ -106,4 +106,9 @@ public class AlwaysOnDisplaySlice implements CustomSliceable {
public Intent getIntent() { public Intent getIntent() {
return null; return null;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
} }

View File

@@ -67,6 +67,11 @@ public class AmbientDisplayAlwaysOnPreferenceController extends TogglePreference
return true; return true;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
@Override @Override
public boolean isChecked() { public boolean isChecked() {
return getConfig().alwaysOnEnabled(MY_USER); return getConfig().alwaysOnEnabled(MY_USER);

View File

@@ -25,6 +25,7 @@ import android.text.TextUtils;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference; import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
@@ -100,4 +101,9 @@ public class AmbientDisplayNotificationsPreferenceController extends
return mConfig; return mConfig;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
} }

View File

@@ -61,4 +61,9 @@ public class AutoBrightnessPreferenceController extends TogglePreferenceControll
? R.string.auto_brightness_summary_on ? R.string.auto_brightness_summary_on
: R.string.auto_brightness_summary_off); : R.string.auto_brightness_summary_off);
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
} }

View File

@@ -20,6 +20,7 @@ import android.text.TextUtils;
import androidx.preference.Preference; import androidx.preference.Preference;
import com.android.internal.view.RotationPolicy; import com.android.internal.view.RotationPolicy;
import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
@@ -86,6 +87,11 @@ public class AutoRotatePreferenceController extends TogglePreferenceController i
return true; return true;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
@Override @Override
public boolean isChecked() { public boolean isChecked() {
return !RotationPolicy.isRotationLocked(mContext); return !RotationPolicy.isRotationLocked(mContext);

View File

@@ -70,6 +70,11 @@ public class ControlsPrivacyPreferenceController extends TogglePreferenceControl
refreshSummary(preference); refreshSummary(preference);
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
private boolean isEnabled() { private boolean isEnabled() {
return isControlsAvailable(); return isControlsAvailable();
} }

View File

@@ -95,6 +95,11 @@ public class DarkUIPreferenceController extends TogglePreferenceController imple
return mUiModeManager.setNightModeActivated(isChecked); return mUiModeManager.setNightModeActivated(isChecked);
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
private void showDarkModeDialog() { private void showDarkModeDialog() {
final DarkUIInfoDialogFragment frag = new DarkUIInfoDialogFragment(); final DarkUIInfoDialogFragment frag = new DarkUIInfoDialogFragment();
if (mFragment != null && mFragment.getFragmentManager() != null) { if (mFragment != null && mFragment.getFragmentManager() != null) {

View File

@@ -21,19 +21,19 @@ import android.hardware.display.ColorDisplayManager;
import android.net.Uri; import android.net.Uri;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.os.UserHandle;
import android.provider.Settings.Secure; import android.provider.Settings.Secure;
import android.provider.Settings.System; import android.provider.Settings.System;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop; import com.android.settingslib.core.lifecycle.events.OnStop;
import com.android.settings.core.TogglePreferenceController;
public class DisplayWhiteBalancePreferenceController extends TogglePreferenceController public class DisplayWhiteBalancePreferenceController extends TogglePreferenceController
implements LifecycleObserver, OnStart, OnStop { implements LifecycleObserver, OnStart, OnStop {
@@ -62,6 +62,11 @@ public class DisplayWhiteBalancePreferenceController extends TogglePreferenceCon
return getColorDisplayManager().setDisplayWhiteBalanceEnabled(isChecked); return getColorDisplayManager().setDisplayWhiteBalanceEnabled(isChecked);
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
@Override @Override
public void onStart() { public void onStart() {
if (!isAvailable()) { if (!isAvailable()) {

View File

@@ -24,6 +24,7 @@ import android.widget.Switch;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
@@ -65,6 +66,11 @@ public class NightDisplayActivationPreferenceController extends
return true; return true;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
@Override @Override
public void displayPreference(PreferenceScreen screen) { public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen); super.displayPreference(screen);

View File

@@ -23,6 +23,7 @@ import android.text.TextUtils;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.SliderPreferenceController; import com.android.settings.core.SliderPreferenceController;
import com.android.settings.widget.SeekBarPreference; import com.android.settings.widget.SeekBarPreference;
@@ -55,6 +56,11 @@ public class NightDisplayIntensityPreferenceController extends SliderPreferenceC
return true; return true;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
@Override @Override
public void displayPreference(PreferenceScreen screen) { public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen); super.displayPreference(screen);

View File

@@ -95,6 +95,11 @@ public class NightDisplayPreferenceController extends TogglePreferenceController
preference.setSummary(mTimeFormatter.getAutoModeSummary(mContext, mColorDisplayManager)); preference.setSummary(mTimeFormatter.getAutoModeSummary(mContext, mColorDisplayManager));
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
@Override @Override
public void onActivated(boolean activated) { public void onActivated(boolean activated) {
updateState(mPreference); updateState(mPreference);

View File

@@ -119,6 +119,11 @@ public class PeakRefreshRatePreferenceController extends TogglePreferenceControl
mContext.getContentResolver(), Settings.System.PEAK_REFRESH_RATE, peakRefreshRate); mContext.getContentResolver(), Settings.System.PEAK_REFRESH_RATE, peakRefreshRate);
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
@Override @Override
public void onStart() { public void onStart() {
mDeviceConfigDisplaySettings.startListening(); mDeviceConfigDisplaySettings.startListening();

View File

@@ -43,6 +43,7 @@ import androidx.preference.PreferenceScreen;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.view.RotationPolicy; import com.android.internal.view.RotationPolicy;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
@@ -157,6 +158,11 @@ public class SmartAutoRotateController extends TogglePreferenceController implem
return true; return true;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
static boolean isRotationResolverServiceAvailable(Context context) { static boolean isRotationResolverServiceAvailable(Context context) {
final PackageManager packageManager = context.getPackageManager(); final PackageManager packageManager = context.getPackageManager();
final String resolvePackage = packageManager.getRotationResolverPackageName(); final String resolvePackage = packageManager.getRotationResolverPackageName();

View File

@@ -22,7 +22,6 @@ import static android.provider.Settings.Secure.CAMERA_AUTOROTATE;
import static com.android.settings.display.SmartAutoRotateController.hasSufficientPermission; import static com.android.settings.display.SmartAutoRotateController.hasSufficientPermission;
import static com.android.settings.display.SmartAutoRotateController.isRotationResolverServiceAvailable; import static com.android.settings.display.SmartAutoRotateController.isRotationResolverServiceAvailable;
import android.text.TextUtils;
import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
@@ -32,6 +31,7 @@ import android.hardware.SensorPrivacyManager;
import android.os.PowerManager; import android.os.PowerManager;
import android.os.UserHandle; import android.os.UserHandle;
import android.provider.Settings; import android.provider.Settings;
import android.text.TextUtils;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
@@ -90,6 +90,11 @@ public class SmartAutoRotatePreferenceController extends TogglePreferenceControl
return true; return true;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
@Override @Override
public void displayPreference(PreferenceScreen screen) { public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen); super.displayPreference(screen);

View File

@@ -72,6 +72,11 @@ public class WalletPrivacyPreferenceController extends TogglePreferenceControlle
refreshSummary(preference); refreshSummary(preference);
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
private boolean isEnabled() { private boolean isEnabled() {
return mClient.isWalletServiceAvailable(); return mClient.isWalletServiceAvailable();
} }

View File

@@ -20,6 +20,7 @@ import android.content.Context;
import androidx.preference.Preference; import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
import com.android.settings.widget.SettingsMainSwitchPreferenceController; import com.android.settings.widget.SettingsMainSwitchPreferenceController;
@@ -67,4 +68,9 @@ public class StartNowPreferenceController extends SettingsMainSwitchPreferenceCo
} }
return true; return true;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
} }

View File

@@ -52,6 +52,12 @@ public class EmergencyGestureSoundPreferenceController extends TogglePreferenceC
return false; return false;
} }
@Override
public int getSliceHighlightMenuRes() {
// not needed since it's not sliceable
return 0;
}
@Override @Override
public boolean isChecked() { public boolean isChecked() {
return mEmergencyNumberUtils.getEmergencyGestureSoundEnabled(); return mEmergencyNumberUtils.getEmergencyGestureSoundEnabled();

View File

@@ -117,6 +117,12 @@ public class FlashlightSlice implements CustomSliceable {
return null; return null;
} }
@Override
public int getSliceHighlightMenuRes() {
// no landing page in Settings
return 0;
}
private static String getCameraId(Context context) throws CameraAccessException { private static String getCameraId(Context context) throws CameraAccessException {
final CameraManager cameraManager = context.getSystemService(CameraManager.class); final CameraManager cameraManager = context.getSystemService(CameraManager.class);
final String[] ids = cameraManager.getCameraIdList(); final String[] ids = cameraManager.getCameraIdList();

View File

@@ -24,6 +24,7 @@ import android.text.TextUtils;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.SwitchPreference; import androidx.preference.SwitchPreference;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
@@ -61,6 +62,11 @@ public class SmartBatteryPreferenceController extends BasePreferenceController i
return true; return true;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_battery;
}
@Override @Override
public void updateState(Preference preference) { public void updateState(Preference preference) {
super.updateState(preference); super.updateState(preference);

View File

@@ -118,6 +118,11 @@ public class BatterySaverButtonPreferenceController extends
false /* needFirstTimeWarning */); false /* needFirstTimeWarning */);
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_battery;
}
@Override @Override
public void onPowerSaveModeChanged() { public void onPowerSaveModeChanged() {
mHandler.postDelayed(() -> onPowerSaveModeChangedInternal(), mHandler.postDelayed(() -> onPowerSaveModeChangedInternal(),

View File

@@ -8,6 +8,7 @@ import android.text.TextUtils;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.SwitchPreference; import androidx.preference.SwitchPreference;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
@@ -59,4 +60,9 @@ public class BatterySaverStickyPreferenceController extends TogglePreferenceCont
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
return AVAILABLE; return AVAILABLE;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_battery;
}
} }

View File

@@ -19,6 +19,7 @@ package com.android.settings.gestures;
import android.content.Context; import android.content.Context;
import android.provider.Settings; import android.provider.Settings;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
/** /**
@@ -50,4 +51,9 @@ public class GestureNavigationSettingsAssistController extends TogglePreferenceC
return SystemNavigationPreferenceController.isGestureAvailable(mContext) ? AVAILABLE return SystemNavigationPreferenceController.isGestureAvailable(mContext) ? AVAILABLE
: UNSUPPORTED_ON_DEVICE; : UNSUPPORTED_ON_DEVICE;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_system;
}
} }

View File

@@ -78,6 +78,11 @@ public abstract class GesturePreferenceController extends TogglePreferenceContro
} }
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_system;
}
protected abstract String getVideoPrefKey(); protected abstract String getVideoPrefKey();
protected boolean canHandleClicks() { protected boolean canHandleClicks() {

View File

@@ -25,10 +25,13 @@ import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.SearchIndexable; import com.android.settingslib.search.SearchIndexable;
import java.util.List;
@SearchIndexable @SearchIndexable
public class GestureSettings extends DashboardFragment { public class GestureSettings extends DashboardFragment {
private static final String TAG = "GestureSettings"; private static final String TAG = "GestureSettings";
private static final String PREF_KEY_PREVENT_RINGING = "gesture_prevent_ringing_summary";
private AmbientDisplayConfiguration mAmbientDisplayConfig; private AmbientDisplayConfiguration mAmbientDisplayConfig;
@@ -63,5 +66,13 @@ public class GestureSettings extends DashboardFragment {
} }
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider(R.xml.gestures); new BaseSearchIndexProvider(R.xml.gestures) {
@Override
public List<String> getNonIndexableKeys(Context context) {
final List<String> keys = super.getNonIndexableKeys(context);
// de-duplicated due to another same entry in Sound page
keys.add(PREF_KEY_PREVENT_RINGING);
return keys;
}
};
} }

View File

@@ -120,6 +120,11 @@ public class LongPressPowerButtonPreferenceController extends TogglePreferenceCo
return false; return false;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_system;
}
private void refreshStateDisplay() { private void refreshStateDisplay() {
if (mAssistSwitch != null) { if (mAssistSwitch != null) {
mAssistSwitch.setSummary(getSummary()); mAssistSwitch.setSummary(getSummary());

View File

@@ -21,6 +21,7 @@ import android.net.Uri;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.widget.SettingsMainSwitchPreferenceController; import com.android.settings.widget.SettingsMainSwitchPreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStart;
@@ -92,4 +93,9 @@ public class OneHandedMainSwitchPreferenceController extends
mPreference.setChecked(isChecked()); mPreference.setChecked(isChecked());
} }
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_system;
}
} }

View File

@@ -137,6 +137,11 @@ public class PreventRingingParentPreferenceController extends TogglePreferenceCo
return UNSUPPORTED_ON_DEVICE; return UNSUPPORTED_ON_DEVICE;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_sound;
}
@Override @Override
public void onStart() { public void onStart() {
if (mSettingObserver != null) { if (mSettingObserver != null) {

View File

@@ -147,11 +147,17 @@ public class BatteryFixSlice implements CustomSliceable {
return SliceBuilderUtils.buildSearchResultPageIntent(mContext, return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
PowerUsageSummary.class.getName(), BatteryTipPreferenceController.PREF_NAME, PowerUsageSummary.class.getName(), BatteryTipPreferenceController.PREF_NAME,
screenTitle, screenTitle,
SettingsEnums.SLICE) SettingsEnums.SLICE,
this)
.setClassName(mContext.getPackageName(), SubSettings.class.getName()) .setClassName(mContext.getPackageName(), SubSettings.class.getName())
.setData(contentUri); .setData(contentUri);
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_battery;
}
@Override @Override
public void onNotifyChange(Intent intent) { public void onNotifyChange(Intent intent) {
} }

View File

@@ -130,11 +130,17 @@ public class BluetoothDevicesSlice implements CustomSliceable {
return SliceBuilderUtils.buildSearchResultPageIntent(mContext, return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
ConnectedDeviceDashboardFragment.class.getName(), "" /* key */, ConnectedDeviceDashboardFragment.class.getName(), "" /* key */,
screenTitle, screenTitle,
SettingsEnums.SLICE) SettingsEnums.SLICE,
this)
.setClassName(mContext.getPackageName(), SubSettings.class.getName()) .setClassName(mContext.getPackageName(), SubSettings.class.getName())
.setData(getUri()); .setData(getUri());
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_connected_devices;
}
@Override @Override
public void onNotifyChange(Intent intent) { public void onNotifyChange(Intent intent) {
final boolean enableBluetooth = intent.getBooleanExtra(EXTRA_ENABLE_BLUETOOTH, false); final boolean enableBluetooth = intent.getBooleanExtra(EXTRA_ENABLE_BLUETOOTH, false);

View File

@@ -117,8 +117,14 @@ public class ContextualAdaptiveSleepSlice implements CustomSliceable {
final Uri contentUri = new Uri.Builder().appendPath(PREF_NAME).build(); final Uri contentUri = new Uri.Builder().appendPath(PREF_NAME).build();
return SliceBuilderUtils.buildSearchResultPageIntent(mContext, return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
ScreenTimeoutSettings.class.getName(), PREF_NAME, screenTitle.toString(), ScreenTimeoutSettings.class.getName(), PREF_NAME, screenTitle.toString(),
SettingsEnums.SLICE).setClassName(mContext.getPackageName(), SettingsEnums.SLICE, this)
SubSettings.class.getName()).setData(contentUri); .setClassName(mContext.getPackageName(),
SubSettings.class.getName()).setData(contentUri);
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
} }
private PendingIntent getPrimaryAction() { private PendingIntent getPrimaryAction() {

View File

@@ -148,6 +148,11 @@ public class DarkThemeSlice implements CustomSliceable {
return null; return null;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
@Override @Override
public Class getBackgroundWorkerClass() { public Class getBackgroundWorkerClass() {
return DarkThemeWorker.class; return DarkThemeWorker.class;

View File

@@ -133,13 +133,18 @@ public class FaceSetupSlice implements CustomSliceable {
SecuritySettings.class.getName(), SecuritySettings.class.getName(),
FaceStatusPreferenceController.KEY_FACE_SETTINGS, FaceStatusPreferenceController.KEY_FACE_SETTINGS,
mContext.getText(R.string.security_settings_face_settings_enroll).toString(), mContext.getText(R.string.security_settings_face_settings_enroll).toString(),
SettingsEnums.SLICE) SettingsEnums.SLICE, this)
.setClassName(mContext.getPackageName(), SubSettings.class.getName()); .setClassName(mContext.getPackageName(), SubSettings.class.getName());
} else { } else {
return new Intent(mContext, FaceReEnrollDialog.class); return new Intent(mContext, FaceReEnrollDialog.class);
} }
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_security;
}
private static RowBuilder buildRowBuilder(CharSequence title, CharSequence subTitle, private static RowBuilder buildRowBuilder(CharSequence title, CharSequence subTitle,
IconCompat icon, Context context, Intent intent) { IconCompat icon, Context context, Intent intent) {
final SliceAction primarySliceAction = SliceAction.createDeeplink( final SliceAction primarySliceAction = SliceAction.createDeeplink(

View File

@@ -109,11 +109,17 @@ public class LowStorageSlice implements CustomSliceable {
return SliceBuilderUtils.buildSearchResultPageIntent(mContext, return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
StorageDashboardFragment.class.getName(), "" /* key */, StorageDashboardFragment.class.getName(), "" /* key */,
screenTitle, screenTitle,
SettingsEnums.SLICE) SettingsEnums.SLICE,
this)
.setClassName(mContext.getPackageName(), SubSettings.class.getName()) .setClassName(mContext.getPackageName(), SubSettings.class.getName())
.setData(CustomSliceRegistry.LOW_STORAGE_SLICE_URI); .setData(CustomSliceRegistry.LOW_STORAGE_SLICE_URI);
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_storage;
}
private RowBuilder buildRowBuilder(CharSequence title, String summary, IconCompat icon) { private RowBuilder buildRowBuilder(CharSequence title, String summary, IconCompat icon) {
final SliceAction primarySliceAction = SliceAction.createDeeplink( final SliceAction primarySliceAction = SliceAction.createDeeplink(
PendingIntent.getActivity(mContext, 0, getIntent(), PendingIntent.FLAG_IMMUTABLE), PendingIntent.getActivity(mContext, 0, getIntent(), PendingIntent.FLAG_IMMUTABLE),

View File

@@ -100,6 +100,11 @@ public class GameControllerPreferenceController extends TogglePreferenceControll
Settings.System.VIBRATE_INPUT_DEVICES, isChecked ? 1 : 0); Settings.System.VIBRATE_INPUT_DEVICES, isChecked ? 1 : 0);
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_system;
}
@Override @Override
public void onInputDeviceAdded(int deviceId) { public void onInputDeviceAdded(int deviceId) {
updateState(mPreference); updateState(mPreference);

View File

@@ -1,5 +1,6 @@
# Bug component: 34867 # Bug component: 34867
include platform/frameworks/base:/services/core/java/com/android/server/inputmethod/OWNERS include platform/frameworks/base:/services/core/java/com/android/server/inputmethod/OWNERS
include /OWNERS
# Settings for physical keyboard and game pad are better to be reviewed by the input team # Settings for physical keyboard and game pad are better to be reviewed by the input team
per-file GameControllerPreferenceController.java = file: platform/frameworks/base:/services/core/java/com/android/server/input/OWNERS per-file GameControllerPreferenceController.java = file: platform/frameworks/base:/services/core/java/com/android/server/input/OWNERS

View File

@@ -67,6 +67,11 @@ public class BluetoothScanningMainSwitchPreferenceController extends TogglePrefe
return true; return true;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_location;
}
@Override @Override
public void onSwitchChanged(Switch switchView, boolean isChecked) { public void onSwitchChanged(Switch switchView, boolean isChecked) {
if (isChecked != isChecked()) { if (isChecked != isChecked()) {

View File

@@ -20,6 +20,7 @@ import android.content.Context;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.provider.DeviceConfig; import android.provider.DeviceConfig;
import com.android.settings.R;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
@@ -54,4 +55,9 @@ public class LocationIndicatorsPreferenceController extends TogglePreferenceCont
return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LOCATION) return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LOCATION)
? AVAILABLE : UNSUPPORTED_ON_DEVICE; ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_location;
}
} }

View File

@@ -88,11 +88,16 @@ public class LocationSlice implements CustomSliceable {
final Uri contentUri = new Uri.Builder().appendPath(KEY_LOCATION).build(); final Uri contentUri = new Uri.Builder().appendPath(KEY_LOCATION).build();
return SliceBuilderUtils.buildSearchResultPageIntent(mContext, return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
LocationSettings.class.getName(), KEY_LOCATION, screenTitle, LocationSettings.class.getName(), KEY_LOCATION, screenTitle,
SettingsEnums.LOCATION) SettingsEnums.LOCATION, this)
.setClassName(mContext.getPackageName(), SubSettings.class.getName()) .setClassName(mContext.getPackageName(), SubSettings.class.getName())
.setData(contentUri); .setData(contentUri);
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_location;
}
private PendingIntent getPrimaryAction() { private PendingIntent getPrimaryAction() {
final Intent intent = getIntent(); final Intent intent = getIntent();
return PendingIntent.getActivity(mContext, 0 /* requestCode */, return PendingIntent.getActivity(mContext, 0 /* requestCode */,

View File

@@ -68,6 +68,11 @@ public class WifiScanningMainSwitchPreferenceController extends TogglePreference
return true; return true;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_location;
}
@Override @Override
public void onSwitchChanged(Switch switchView, boolean isChecked) { public void onSwitchChanged(Switch switchView, boolean isChecked) {
if (isChecked != isChecked()) { if (isChecked != isChecked()) {

View File

@@ -92,6 +92,11 @@ public class MediaOutputIndicatorSlice implements CustomSliceable {
return null; return null;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_connected_devices;
}
@Override @Override
public Class getBackgroundWorkerClass() { public Class getBackgroundWorkerClass() {
return MediaOutputIndicatorWorker.class; return MediaOutputIndicatorWorker.class;

View File

@@ -181,7 +181,9 @@ public class RemoteMediaSlice implements CustomSliceable {
final Intent intent = SliceBuilderUtils.buildSearchResultPageIntent(mContext, final Intent intent = SliceBuilderUtils.buildSearchResultPageIntent(mContext,
SoundSettings.class.getName(), SoundSettings.class.getName(),
id, id,
mContext.getText(R.string.sound_settings).toString(), 0); mContext.getText(R.string.sound_settings).toString(),
0 /* sourceMetricsCategory */,
R.string.menu_key_sound);
intent.setClassName(mContext.getPackageName(), SubSettings.class.getName()); intent.setClassName(mContext.getPackageName(), SubSettings.class.getName());
intent.setData(contentUri); intent.setData(contentUri);
final PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent, final PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent,
@@ -221,6 +223,11 @@ public class RemoteMediaSlice implements CustomSliceable {
return null; return null;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_connected_devices;
}
@Override @Override
public Class getBackgroundWorkerClass() { public Class getBackgroundWorkerClass() {
return MediaDeviceUpdateWorker.class; return MediaDeviceUpdateWorker.class;

View File

@@ -22,6 +22,7 @@ import android.provider.Settings;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.widget.SettingsMainSwitchPreferenceController; import com.android.settings.widget.SettingsMainSwitchPreferenceController;
/** /**
@@ -62,4 +63,9 @@ public class AdaptiveConnectivityTogglePreferenceController extends
mWifiManager.setWifiScoringEnabled(isChecked); mWifiManager.setWifiScoringEnabled(isChecked);
return true; return true;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_network;
}
} }

View File

@@ -120,6 +120,11 @@ public class AirplaneModePreferenceController extends TogglePreferenceController
return isAvailable(mContext) ? AVAILABLE : UNSUPPORTED_ON_DEVICE; return isAvailable(mContext) ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_network;
}
@Override @Override
public void onStart() { public void onStart() {
if (isAvailable()) { if (isAvailable()) {

View File

@@ -22,6 +22,7 @@ import androidx.lifecycle.Lifecycle;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import com.android.settings.wifi.WifiPickerTrackerHelper; import com.android.settings.wifi.WifiPickerTrackerHelper;
@@ -88,6 +89,11 @@ public class CarrierWifiTogglePreferenceController extends TogglePreferenceContr
updateCarrierNetworkPreference(); updateCarrierNetworkPreference();
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_network;
}
@Override @Override
public void onWifiStateChanged() { public void onWifiStateChanged() {
updateCarrierNetworkPreference(); updateCarrierNetworkPreference();

View File

@@ -290,7 +290,7 @@ public class ProviderModelSlice extends WifiSlice {
final String screenTitle = mContext.getText(R.string.provider_internet_settings).toString(); final String screenTitle = mContext.getText(R.string.provider_internet_settings).toString();
return SliceBuilderUtils.buildSearchResultPageIntent(mContext, return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
NetworkProviderSettings.class.getName(), "" /* key */, screenTitle, NetworkProviderSettings.class.getName(), "" /* key */, screenTitle,
SettingsEnums.SLICE) SettingsEnums.SLICE, this)
.setClassName(mContext.getPackageName(), SubSettings.class.getName()) .setClassName(mContext.getPackageName(), SubSettings.class.getName())
.setData(getUri()); .setData(getUri());
} }

View File

@@ -25,6 +25,7 @@ import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import com.android.settings.datausage.DataSaverBackend; import com.android.settings.datausage.DataSaverBackend;
@@ -117,6 +118,11 @@ public abstract class TetherBasePreferenceController extends TogglePreferenceCon
return AVAILABLE; return AVAILABLE;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_network;
}
@Override @Override
public void onTetherStateUpdated(@TetherEnabler.TetheringState int state) { public void onTetherStateUpdated(@TetherEnabler.TetheringState int state) {
mTetheringState = state; mTetheringState = state;

View File

@@ -145,6 +145,11 @@ public class MobileDataSlice implements CustomSliceable {
return new Intent(mContext, MobileNetworkActivity.class); return new Intent(mContext, MobileNetworkActivity.class);
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_network;
}
@Override @Override
public Class<? extends SliceBackgroundWorker> getBackgroundWorkerClass() { public Class<? extends SliceBackgroundWorker> getBackgroundWorkerClass() {
return MobileDataWorker.class; return MobileDataWorker.class;

View File

@@ -65,6 +65,12 @@ public abstract class TelephonyTogglePreferenceController extends TogglePreferen
return false; return false;
} }
@Override
public int getSliceHighlightMenuRes() {
// not needed since it's not sliceable
return 0;
}
/** /**
* Get carrier config based on specific subscription id. * Get carrier config based on specific subscription id.
* *

View File

@@ -27,6 +27,7 @@ import android.widget.Switch;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import com.android.settings.slices.SliceBackgroundWorker; import com.android.settings.slices.SliceBackgroundWorker;
import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -58,7 +59,7 @@ public class NfcPreferenceController extends TogglePreferenceController
return; return;
} }
mPreference = (MainSwitchPreference) screen.findPreference(getPreferenceKey()); mPreference = screen.findPreference(getPreferenceKey());
mPreference.addOnSwitchChangeListener(this); mPreference.addOnSwitchChangeListener(this);
mNfcEnabler = new NfcEnabler(mContext, mPreference); mNfcEnabler = new NfcEnabler(mContext, mPreference);
} }
@@ -103,6 +104,11 @@ public class NfcPreferenceController extends TogglePreferenceController
return true; return true;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_connected_devices;
}
@Override @Override
public Class<? extends SliceBackgroundWorker> getBackgroundWorkerClass() { public Class<? extends SliceBackgroundWorker> getBackgroundWorkerClass() {
return NfcSliceWorker.class; return NfcSliceWorker.class;

View File

@@ -21,6 +21,7 @@ import android.nfc.NfcAdapter;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference; import androidx.preference.SwitchPreference;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnPause;
@@ -81,6 +82,11 @@ public class SecureNfcPreferenceController extends TogglePreferenceController
return true; return true;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_connected_devices;
}
@Override @Override
public void onResume() { public void onResume() {
if (mSecureNfcEnabler != null) { if (mSecureNfcEnabler != null) {

View File

@@ -30,6 +30,7 @@ import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -87,6 +88,11 @@ public class BadgingNotificationPreferenceController extends TogglePreferenceCon
return TextUtils.equals(getPreferenceKey(), "notification_badging"); return TextUtils.equals(getPreferenceKey(), "notification_badging");
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_notifications;
}
@Override @Override
public boolean isChecked() { public boolean isChecked() {
return Settings.Secure.getInt(mContext.getContentResolver(), return Settings.Secure.getInt(mContext.getContentResolver(),

View File

@@ -88,6 +88,12 @@ public class BubbleNotificationPreferenceController extends
return false; return false;
} }
@Override
public int getSliceHighlightMenuRes() {
// not needed since it's not sliceable
return 0;
}
@Override @Override
public boolean isChecked() { public boolean isChecked() {
return Settings.Global.getInt(mContext.getContentResolver(), return Settings.Global.getInt(mContext.getContentResolver(),

View File

@@ -24,6 +24,7 @@ import android.provider.Settings;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import com.google.common.annotations.VisibleForTesting; import com.google.common.annotations.VisibleForTesting;
@@ -73,6 +74,11 @@ public class NotificationAssistantPreferenceController extends TogglePreferenceC
} }
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_notifications;
}
protected void setNotificationAssistantGranted(ComponentName cn) { protected void setNotificationAssistantGranted(ComponentName cn) {
if (Settings.Secure.getIntForUser(mContext.getContentResolver(), if (Settings.Secure.getIntForUser(mContext.getContentResolver(),
Settings.Secure.NAS_SETTINGS_UPDATED, 0, mUserId) == 0) { Settings.Secure.NAS_SETTINGS_UPDATED, 0, mUserId) == 0) {

View File

@@ -28,6 +28,7 @@ import android.provider.Settings;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnPause;
@@ -86,6 +87,11 @@ public class PulseNotificationPreferenceController extends TogglePreferenceContr
isChecked ? ON : OFF); isChecked ? ON : OFF);
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_notifications;
}
class SettingObserver extends ContentObserver { class SettingObserver extends ContentObserver {
private final Uri NOTIFICATION_LIGHT_PULSE_URI = private final Uri NOTIFICATION_LIGHT_PULSE_URI =

View File

@@ -32,6 +32,7 @@ import android.provider.Settings;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.LockPatternUtils;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils;
@@ -146,6 +147,11 @@ public class RedactNotificationPreferenceController extends TogglePreferenceCont
return AVAILABLE; return AVAILABLE;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_notifications;
}
@Override @Override
public void onStart() { public void onStart() {
mContext.getContentResolver().registerContentObserver( mContext.getContentResolver().registerContentObserver(

View File

@@ -18,6 +18,7 @@ package com.android.settings.notification;
import android.content.Context; import android.content.Context;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import com.google.common.annotations.VisibleForTesting; import com.google.common.annotations.VisibleForTesting;
@@ -52,4 +53,9 @@ public class SilentStatusBarPreferenceController extends TogglePreferenceControl
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
return AVAILABLE; return AVAILABLE;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_notifications;
}
} }

View File

@@ -21,10 +21,11 @@ import static android.provider.Settings.Secure.SHOW_NOTIFICATION_SNOOZE;
import android.content.Context; import android.content.Context;
import android.provider.Settings; import android.provider.Settings;
import com.android.settings.core.TogglePreferenceController;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
public class SnoozeNotificationPreferenceController extends TogglePreferenceController { public class SnoozeNotificationPreferenceController extends TogglePreferenceController {
private static final String TAG = "SnoozeNotifPrefContr"; private static final String TAG = "SnoozeNotifPrefContr";
@@ -53,4 +54,9 @@ public class SnoozeNotificationPreferenceController extends TogglePreferenceCont
return Settings.Secure.putInt(mContext.getContentResolver(), return Settings.Secure.putInt(mContext.getContentResolver(),
SHOW_NOTIFICATION_SNOOZE, isChecked ? ON : OFF); SHOW_NOTIFICATION_SNOOZE, isChecked ? ON : OFF);
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_notifications;
}
} }

View File

@@ -20,6 +20,7 @@ import android.content.Context;
import android.media.AudioManager; import android.media.AudioManager;
import android.media.Spatializer; import android.media.Spatializer;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
/** /**
@@ -53,4 +54,9 @@ public class SpatialAudioPreferenceController extends TogglePreferenceController
mSpatializer.setEnabled(isChecked); mSpatializer.setEnabled(isChecked);
return isChecked == isChecked(); return isChecked == isChecked();
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_notifications;
}
} }

View File

@@ -23,6 +23,7 @@ import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent; import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.notification.VolumeSeekBarPreference.Callback; import com.android.settings.notification.VolumeSeekBarPreference.Callback;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -75,6 +76,11 @@ public abstract class VolumeSeekBarPreferenceController extends
} }
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_sound;
}
@Override @Override
public int getSliderPosition() { public int getSliderPosition() {
if (mPreference != null) { if (mPreference != null) {

View File

@@ -120,7 +120,7 @@ public class ZenModeSliceBuilder {
final String screenTitle = context.getText(R.string.zen_mode_settings_title).toString(); final String screenTitle = context.getText(R.string.zen_mode_settings_title).toString();
return SliceBuilderUtils.buildSearchResultPageIntent(context, return SliceBuilderUtils.buildSearchResultPageIntent(context,
ZenModeSettings.class.getName(), ZEN_MODE_SLICE_KEY, screenTitle, ZenModeSettings.class.getName(), ZEN_MODE_SLICE_KEY, screenTitle,
SettingsEnums.NOTIFICATION_ZEN_MODE) SettingsEnums.NOTIFICATION_ZEN_MODE, R.string.menu_key_notifications)
.setClassName(context.getPackageName(), SubSettings.class.getName()) .setClassName(context.getPackageName(), SubSettings.class.getName())
.setData(contentUri); .setData(contentUri);
} }

View File

@@ -62,7 +62,8 @@ public class NfcPanel implements PanelContent {
AdvancedConnectedDeviceDashboardFragment.class.getName(), AdvancedConnectedDeviceDashboardFragment.class.getName(),
null /* key */, null /* key */,
screenTitle, screenTitle,
SettingsEnums.SETTINGS_CONNECTED_DEVICE_CATEGORY); SettingsEnums.SETTINGS_CONNECTED_DEVICE_CATEGORY,
R.string.menu_key_connected_devices);
intent.setClassName(mContext.getPackageName(), SubSettings.class.getName()); intent.setClassName(mContext.getPackageName(), SubSettings.class.getName());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
return intent; return intent;

View File

@@ -62,10 +62,11 @@ public class WifiPanel implements PanelContent {
final String screenTitle = final String screenTitle =
mContext.getText(R.string.wifi_settings).toString(); mContext.getText(R.string.wifi_settings).toString();
final Intent intent = SliceBuilderUtils.buildSearchResultPageIntent(mContext, final Intent intent = SliceBuilderUtils.buildSearchResultPageIntent(mContext,
WifiSettings.class.getName(), WifiSettings.class.getName(),
null /* key */, null /* key */,
screenTitle, screenTitle,
SettingsEnums.WIFI); SettingsEnums.WIFI,
R.string.menu_key_network);
intent.setClassName(mContext.getPackageName(), SubSettings.class.getName()); intent.setClassName(mContext.getPackageName(), SubSettings.class.getName());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
return intent; return intent;

View File

@@ -18,8 +18,8 @@ package com.android.settings.privacy;
import android.annotation.NonNull; import android.annotation.NonNull;
import android.content.Context; import android.content.Context;
import android.provider.Settings;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import com.android.settings.utils.ContentCaptureUtils; import com.android.settings.utils.ContentCaptureUtils;
@@ -46,4 +46,9 @@ public final class EnableContentCapturePreferenceController extends TogglePrefer
&& ContentCaptureUtils.getServiceSettingsComponentName() == null; && ContentCaptureUtils.getServiceSettingsComponentName() == null;
return available ? AVAILABLE : UNSUPPORTED_ON_DEVICE; return available ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_privacy;
}
} }

View File

@@ -28,8 +28,8 @@ import android.util.Log;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import com.android.settings.dashboard.profileselector.UserAdapter; import com.android.settings.dashboard.profileselector.UserAdapter;
import com.android.settings.utils.ContentCaptureUtils; import com.android.settings.utils.ContentCaptureUtils;
@@ -88,6 +88,11 @@ public final class EnableContentCaptureWithServiceSettingsPreferenceController
return available ? AVAILABLE : UNSUPPORTED_ON_DEVICE; return available ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_privacy;
}
private static final class ProfileSelectDialog { private static final class ProfileSelectDialog {
public static void show(Context context, Preference pref) { public static void show(Context context, Preference pref) {
final UserManager userManager = UserManager.get(context); final UserManager userManager = UserManager.get(context);

View File

@@ -22,6 +22,7 @@ import android.content.Context;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import com.android.settings.utils.SensorPrivacyManagerHelper; import com.android.settings.utils.SensorPrivacyManagerHelper;
import com.android.settingslib.RestrictedLockUtilsInternal; import com.android.settingslib.RestrictedLockUtilsInternal;
@@ -80,4 +81,9 @@ public abstract class SensorToggleController extends TogglePreferenceController
(sensor, blocked) -> updateState(screen.findPreference(mPreferenceKey)), (sensor, blocked) -> updateState(screen.findPreference(mPreferenceKey)),
mCallbackExecutor); mCallbackExecutor);
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_privacy;
}
} }

View File

@@ -27,6 +27,7 @@ import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
/** /**
@@ -72,6 +73,11 @@ public class ShowClipAccessNotificationPreferenceController
mPreference = screen.findPreference(getPreferenceKey()); mPreference = screen.findPreference(getPreferenceKey());
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_privacy;
}
/** /**
* Registers a DeviceConfig listener on start. * Registers a DeviceConfig listener on start.
*/ */

View File

@@ -58,5 +58,9 @@ public class ShowPasswordPreferenceController extends TogglePreferenceController
? AVAILABLE : UNSUPPORTED_ON_DEVICE; ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_security;
}
} }

View File

@@ -28,6 +28,7 @@ import androidx.preference.Preference;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.LockPatternUtils;
import com.android.settings.R;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.core.TogglePreferenceController; import com.android.settings.core.TogglePreferenceController;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
@@ -118,6 +119,11 @@ public class VisiblePatternProfilePreferenceController extends TogglePreferenceC
mPreference = screen.findPreference(getPreferenceKey()); mPreference = screen.findPreference(getPreferenceKey());
} }
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_security;
}
@Override @Override
public void onResume() { public void onResume() {
mPreference.setVisible(isAvailable()); mPreference.setVisible(isAvailable());

View File

@@ -103,6 +103,9 @@ public interface CustomSliceable extends Sliceable {
return true; return true;
} }
@Override
int getSliceHighlightMenuRes();
/** /**
* Build an instance of a {@link CustomSliceable} which has a {@link Context}-only constructor. * Build an instance of a {@link CustomSliceable} which has a {@link Context}-only constructor.
*/ */

View File

@@ -16,6 +16,8 @@
package com.android.settings.slices; package com.android.settings.slices;
import static android.provider.Settings.EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_HIGHLIGHT_MENU_KEY;
import static com.android.settings.SettingsActivity.EXTRA_IS_FROM_SLICE; import static com.android.settings.SettingsActivity.EXTRA_IS_FROM_SLICE;
import static com.android.settings.core.BasePreferenceController.DISABLED_DEPENDENT_SETTING; import static com.android.settings.core.BasePreferenceController.DISABLED_DEPENDENT_SETTING;
import static com.android.settings.slices.SettingsSliceProvider.EXTRA_SLICE_KEY; import static com.android.settings.slices.SettingsSliceProvider.EXTRA_SLICE_KEY;
@@ -203,8 +205,15 @@ public class SliceBuilderUtils {
} }
public static Intent buildSearchResultPageIntent(Context context, String className, String key, public static Intent buildSearchResultPageIntent(Context context, String className, String key,
String screenTitle, int sourceMetricsCategory) { String screenTitle, int sourceMetricsCategory, int highlightMenuRes) {
final Bundle args = new Bundle(); final Bundle args = new Bundle();
String highlightMenuKey = null;
if (highlightMenuRes != 0) {
highlightMenuKey = context.getString(highlightMenuRes);
if (TextUtils.isEmpty(highlightMenuKey)) {
Log.w(TAG, "Invalid menu key res from: " + screenTitle);
}
}
args.putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, key); args.putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, key);
final Intent searchDestination = new SubSettingLauncher(context) final Intent searchDestination = new SubSettingLauncher(context)
.setDestination(className) .setDestination(className)
@@ -215,6 +224,7 @@ public class SliceBuilderUtils {
searchDestination searchDestination
.putExtra(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, key) .putExtra(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, key)
.putExtra(EXTRA_IS_FROM_SLICE, true) .putExtra(EXTRA_IS_FROM_SLICE, true)
.putExtra(EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_HIGHLIGHT_MENU_KEY, highlightMenuKey)
.setAction("com.android.settings.SEARCH_RESULT_TRAMPOLINE") .setAction("com.android.settings.SEARCH_RESULT_TRAMPOLINE")
.setComponent(null); .setComponent(null);
searchDestination.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); searchDestination.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
@@ -222,13 +232,22 @@ public class SliceBuilderUtils {
return searchDestination; return searchDestination;
} }
/**
* Build a search result page intent for {@link CustomSliceable}
*/
public static Intent buildSearchResultPageIntent(Context context, String className, String key,
String screenTitle, int sourceMetricsCategory, CustomSliceable sliceable) {
return buildSearchResultPageIntent(context, className, key, screenTitle,
sourceMetricsCategory, sliceable.getSliceHighlightMenuRes());
}
public static Intent getContentIntent(Context context, SliceData sliceData) { public static Intent getContentIntent(Context context, SliceData sliceData) {
final Uri contentUri = new Uri.Builder().appendPath(sliceData.getKey()).build(); final Uri contentUri = new Uri.Builder().appendPath(sliceData.getKey()).build();
final String screenTitle = TextUtils.isEmpty(sliceData.getScreenTitle()) ? null final String screenTitle = TextUtils.isEmpty(sliceData.getScreenTitle()) ? null
: sliceData.getScreenTitle().toString(); : sliceData.getScreenTitle().toString();
final Intent intent = buildSearchResultPageIntent(context, final Intent intent = buildSearchResultPageIntent(context,
sliceData.getFragmentClassName(), sliceData.getKey(), sliceData.getFragmentClassName(), sliceData.getKey(),
screenTitle, 0 /* TODO */); screenTitle, 0 /* TODO */, sliceData.getHighlightMenuRes());
intent.setClassName(context.getPackageName(), SubSettings.class.getName()); intent.setClassName(context.getPackageName(), SubSettings.class.getName());
intent.setData(contentUri); intent.setData(contentUri);
return intent; return intent;

View File

@@ -19,6 +19,7 @@ package com.android.settings.slices;
import android.annotation.IntDef; import android.annotation.IntDef;
import android.net.Uri; import android.net.Uri;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;
@@ -50,6 +51,8 @@ public class SliceData {
int SLIDER = 2; int SLIDER = 2;
} }
private static final String TAG = "SliceData";
private final String mKey; private final String mKey;
private final String mTitle; private final String mTitle;
@@ -68,6 +71,8 @@ public class SliceData {
private final String mPreferenceController; private final String mPreferenceController;
private final int mHighlightMenuRes;
@SliceType @SliceType
private final int mSliceType; private final int mSliceType;
@@ -119,6 +124,10 @@ public class SliceData {
return mUnavailableSliceSubtitle; return mUnavailableSliceSubtitle;
} }
public int getHighlightMenuRes() {
return mHighlightMenuRes;
}
public boolean isPublicSlice() { public boolean isPublicSlice() {
return mIsPublicSlice; return mIsPublicSlice;
} }
@@ -136,6 +145,7 @@ public class SliceData {
mSliceType = builder.mSliceType; mSliceType = builder.mSliceType;
mUnavailableSliceSubtitle = builder.mUnavailableSliceSubtitle; mUnavailableSliceSubtitle = builder.mUnavailableSliceSubtitle;
mIsPublicSlice = builder.mIsPublicSlice; mIsPublicSlice = builder.mIsPublicSlice;
mHighlightMenuRes = builder.mHighlightMenuRes;
} }
@Override @Override
@@ -175,6 +185,8 @@ public class SliceData {
private String mUnavailableSliceSubtitle; private String mUnavailableSliceSubtitle;
private int mHighlightMenuRes;
private boolean mIsPublicSlice; private boolean mIsPublicSlice;
public Builder setKey(String key) { public Builder setKey(String key) {
@@ -233,6 +245,11 @@ public class SliceData {
return this; return this;
} }
public Builder setHighlightMenuRes(int highlightMenuRes) {
mHighlightMenuRes = highlightMenuRes;
return this;
}
public Builder setIsPublicSlice(boolean isPublicSlice) { public Builder setIsPublicSlice(boolean isPublicSlice) {
mIsPublicSlice = isPublicSlice; mIsPublicSlice = isPublicSlice;
return this; return this;
@@ -255,6 +272,10 @@ public class SliceData {
throw new InvalidSliceDataException("Preference Controller cannot be empty"); throw new InvalidSliceDataException("Preference Controller cannot be empty");
} }
if (mHighlightMenuRes == 0) {
Log.w(TAG, "Highlight menu key res is empty: " + mPrefControllerClassName);
}
return new SliceData(this); return new SliceData(this);
} }

View File

@@ -213,6 +213,7 @@ class SliceDataConverter {
final String unavailableSliceSubtitle = bundle.getString( final String unavailableSliceSubtitle = bundle.getString(
METADATA_UNAVAILABLE_SLICE_SUBTITLE); METADATA_UNAVAILABLE_SLICE_SUBTITLE);
final boolean isPublicSlice = controller.isPublicSlice(); final boolean isPublicSlice = controller.isPublicSlice();
final int highlightMenuRes = controller.getSliceHighlightMenuRes();
final SliceData xmlSlice = new SliceData.Builder() final SliceData xmlSlice = new SliceData.Builder()
.setKey(key) .setKey(key)
@@ -226,6 +227,7 @@ class SliceDataConverter {
.setSliceType(sliceType) .setSliceType(sliceType)
.setUnavailableSliceSubtitle(unavailableSliceSubtitle) .setUnavailableSliceSubtitle(unavailableSliceSubtitle)
.setIsPublicSlice(isPublicSlice) .setIsPublicSlice(isPublicSlice)
.setHighlightMenuRes(highlightMenuRes)
.build(); .build();
xmlSliceData.add(xmlSlice); xmlSliceData.add(xmlSlice);

Some files were not shown because too many files have changed in this diff Show More